HDU 1999 不可摸数
Problem Descriptions(n)是正整数n的真因子之和,即小于n且整除n的因子和.例如s(12)=1+2+3+4+6=16.如果任何
Input包含多组数据,首先输入T,表示有T组数据.每组数据1行给出n(2<=n<=1000)是整数。
Output如果n是不可摸数,输出yes,否则输出no
Sample Input3
Sample Outputyes |
#include<iostream>
#include<map>
#include<cstdio>
#include<cstring>
using namespace std;
int n[1000005];
int main()
{
map<int,int>m;
int a,b,c,d,e,f,g;
memset(n,0,sizeof(n));
for(a=1;a<=1000000;a++)
{
for(b=2*a;b<=1000000;b+=a)
n[b]+=a;
}
for(b=1;b<=1000000;b++)
m[n[b]]=1;
cin>>a;
while(a--)
{
cin>>b;
if(m[b]!=1)
cout<<"yes"<<endl;
else
cout<<"no"<<endl;
}
return 0;
}