HDU_1999——不可摸数
2013-06-15 20:35
197 查看
[align=left]Problem Description[/align]
s(n)是正整数n的真因子之和,即小于n且整除n的因子和.例如s(12)=1+2+3+4+6=16.如果任何
数m,s(m)都不等于n,则称n为不可摸数.
[align=left]Input[/align]
包含多组数据,首先输入T,表示有T组数据.每组数据1行给出n(2<=n<=1000)是整数。
[align=left]Output[/align]
如果n是不可摸数,输出yes,否则输出no
[align=left]Sample Input[/align]
3 2 5 8
[align=left]Sample Output[/align]
yes yes no
s(n)是正整数n的真因子之和,即小于n且整除n的因子和.例如s(12)=1+2+3+4+6=16.如果任何
数m,s(m)都不等于n,则称n为不可摸数.
[align=left]Input[/align]
包含多组数据,首先输入T,表示有T组数据.每组数据1行给出n(2<=n<=1000)是整数。
[align=left]Output[/align]
如果n是不可摸数,输出yes,否则输出no
[align=left]Sample Input[/align]
3 2 5 8
[align=left]Sample Output[/align]
yes yes no
#include <cstdio> #include <cmath> int mark[1001]={0}; void fun(void) { mark[1]=1; for(int n=4;n<1000000;n++) { int s=1; int o=(int)sqrt(double(n)); for(int j=2;j<=o;j++) if(n%j==0) { if(j*j==n) s=s+j; else s=s+j+n/j; if(s>1000) break; } if(s<1001) mark[s]=1; } } int main() { int T,n; scanf("%d",&T); fun(); while(T--) { scanf("%d",&n); if(mark ) printf("no\n"); else printf("yes\n"); } return 0; }
相关文章推荐
- hdu 1999 不可摸数
- hdu-1999-不可摸数
- hdu 1999 不可摸数
- HDU 1999 不可摸数
- hdu-1999 不可摸数
- 【HDU】 1999 不可摸数
- HDU 1999 不可摸数
- 不可摸数 HDU - 1999
- HDOJ 1999 HDU 1999 不可摸数 ACM 1999 IN HDU
- hdu 1999 不可摸数
- hdu 1999 不可摸数
- HDU--1999-不可摸数
- hdu-oj 1999 不可摸数
- hdu 1999 不可摸数
- HDU 1999 不可摸数 (水题)
- HDU 1999 不可摸数 (约数和。。)
- hdu 1999 不可摸数(朴素打表法求质因子之和)
- hdu 1999 不可摸数
- hdu 1999 不可摸数 筛选素数 两次打表
- HDU 1999 不可摸数(数论)