POJ1528 数论
这题被我做得好搓 做完看别人做的才发现这么简单 遍历就可以的事被为整的有拆分素因子再 排列相乘
哎 真不想说什么自己水的不能再水了
#include <iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int getsumfactor(int x)
{
int ans=0;
for(int i=1;i<=x/2;i++)
if(x%i==0)
ans+=i;
return ans;
}
int getlen(int x)
{
int m=1,ans=0;
while(m<=x)
m*=10,ans++;
return ans;
}
int main()
{
int a[105][3],n,s=0,len=0;
while(cin>>n&&n!=0)
a[s++][0]=n;
for(int i=0; i<s; i++)
{
a[i][1]=getsumfactor(a[i][0]);
a[i][2]=getlen(a[i][0]);
len=max(len,a[i][2]);
}
cout<<"PERFECTION OUTPUT"<<endl;
for(int i=0; i<s; i++)
{
for(int j=0; j<len-a[i][2]; j++)
cout<<" ";
cout<<a[i][0]<<" ";
if(a[i][0]>a[i][1])
cout<<"DEFICIENT"<<endl;
if(a[i][0]==a[i][1])
cout<<"PERFECT"<<endl;
if(a[i][0]<a[i][1])
cout<<"ABUNDANT"<<endl;
}
cout<<"END OF OUTPUT"<<endl;
return 0;
}
下面是我之前A的 靠 我真想杀了我自己
#include <iostream>
#include<cstdio>
#include<cstring>
using namespace std;
#define max1 60000
bool isprime[max1];
int prime[max1],nprime;
void getprime()
{
nprime=0;
long long i,j;
memset(isprime,1,sizeof(isprime));
isprime[1]=0;
for(i=2; i<max1; i++)
if(isprime[i])
{
prime[++nprime]=i;
for(j=i*i; j<max1; j+=i)
isprime[j]=0;
}
}
bool dp[60010][2];
int getsumfactor(int x)
{
memset(dp,0,sizeof(dp));
dp[1][0]=1;
int temp=x,g1=1,g2=0;
for(int i=1; prime[i]<=x&&temp>1; i++)
{
while(temp%prime[i]==0)
{
g1=!g1,g2=!g2;
for(int j=1; j<x; j++)
if(dp[j][g1])
dp[j][g2]=1,dp[j*prime[i]][g2]=1;
temp/=prime[i];
for(int j=0; j<x; j++)
dp[j][g1]=0;
}
}
int ans=0;
for(int i=1; i<x; i++)
if(dp[i][g2])
ans+=i;
return ans;
}
int getlen(int x)
{
int m=1,ans=0;
while(m<=x)
m*=10,ans++;
return ans;
}
int main()
{
getprime();
int a[105][3],n,s=0,len=0;
while(cin>>n&&n!=0)
a[s++][0]=n;
for(int i=0; i<s; i++)
{
a[i][1]=getsumfactor(a[i][0]);
a[i][2]=getlen(a[i][0]);
len=max(len,a[i][2]);
}
cout<<"PERFECTION OUTPUT"<<endl;
for(int i=0; i<s; i++)
{
for(int j=0; j<len-a[i][2]; j++)
cout<<" ";
cout<<a[i][0]<<" ";
if(a[i][0]>a[i][1])
cout<<"DEFICIENT"<<endl;
if(a[i][0]==a[i][1])
cout<<"PERFECT"<<endl;
if(a[i][0]<a[i][1])
cout<<"ABUNDANT"<<endl;
}
cout<<"END OF OUTPUT"<<endl;
return 0;
}
最后更新:2017-04-04 07:03:27