hdoj 1999 不可模数
2014-07-31 09:25
246 查看
http://acm.hdu.edu.cn/showproblem.php?pid=1999
Total Submission(s): 8360 Accepted Submission(s): 2151
[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
http://acm.hdu.edu.cn/showproblem.php?pid=1999
不可摸数
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 8360 Accepted Submission(s): 2151
[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
#include<stdio.h> #include<string.h> int a[1000000],b[1000000]; int main() { int i,j; memset(a,0,sizeof(a)); memset(b,0,sizeof(b)); for(i=1;i<1000000;i++)//先打表,a -n为n的因子之和 for(j=1;j*i<1000000;j++) a[j*i]+=i; for(i=2;i<1010;i++)//用1~1000000的因子和逐一与i比较,如果有等于的,b[i]=1//这里数据范围没给定,所以扫描的范围比较大,从1~1000000 for(j=1;j<1000000;j++) if((a[j]-j)==i) { b[i]=1; break; } //for(i=1;i<100;i++) //printf("%d#%d\n",b[i],i); int T,n,k; scanf("%d",&T); while(T--) { scanf("%d",&n); if(b ==1) printf("no\n"); else printf("yes\n"); } return 0; } <span style="font-size:24px;color:#ff0000;">算法见注释</span>
相关文章推荐
- HDOJ 1999 HDU 1999 不可摸数 ACM 1999 IN HDU
- hdoj 1999 不可摸数 【数学】
- hdoj.1999 不可摸数 20140809
- ACM--打表--HDOJ 1999--不可摸数
- HDOJ-1999 不可摸数
- hdoj1999 不可摸数
- 不可摸数-HDOJ1999
- hdu——1999(不可模数 )
- hdoj 1999 不可摸数 【数学求因子和】
- 数学基本定理-----不可摸数-----HDOJ1999
- 不可摸数-HDOJ1999
- hdoj 1999 不可摸数
- hdoj1999不可摸数
- HDOJ-1999 不可摸数
- 不可模数
- hdu 1999 不可摸数(朴素打表法求质因子之和)
- HDU 1999 不可摸数
- HDU_1999——不可摸数
- 【HDU】 1999 不可摸数
- hdu-1999-不可摸数