ZOJ 1284 数论
2011-05-15 11:55
253 查看
题目连接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=284
这道题得数据范围是60000,询问为100组,所以我感觉暴力也可以,不过我并没有这么写,我利用的是数论的那个因子和的规律来求解的
解法类似于ZOJ 2095,详细内容参见:http://blog.csdn.net/xieshimao/archive/2011/05/06/6399672.aspx
我的代码:
这道题得数据范围是60000,询问为100组,所以我感觉暴力也可以,不过我并没有这么写,我利用的是数论的那个因子和的规律来求解的
解法类似于ZOJ 2095,详细内容参见:http://blog.csdn.net/xieshimao/archive/2011/05/06/6399672.aspx
我的代码:
#include<stdio.h> #include<string.h> bool flag[300]; int prime[300]; void init() { int i,j,num=0; memset(flag,0,sizeof(flag)); for(i=2;i<300;i++) { if(!flag[i]) { prime[num++]=i; for(j=i*i;j<300;j=j+i) flag[j]=true; } } } void slove(int n) { int i,N=n,k1,k2,ans=1; for(i=0;prime[i]*prime[i]<=n;i++) { k1=1,k2=0; if(n%prime[i]==0) { n=n/prime[i]; k1=k1*prime[i]; k2=k2+k1; while(n%prime[i]==0) { n=n/prime[i]; k1=k1*prime[i]; k2=k2+k1; } ans=ans*(k2+1); } if(n==1) break; } if(n>1) ans=ans*(n+1); ans=ans-N; if(ans==N) printf("%5d PERFECT/n",N); else if(ans>N) printf("%5d ABUNDANT/n",N); else printf("%5d DEFICIENT/n",N); } int main() { int n; init(); printf("PERFECTION OUTPUT/n"); while(scanf("%d",&n)!=EOF) { if(n==0) break; slove(n); } printf("END OF OUTPUT/n"); return 0; }
相关文章推荐
- Zoj 3647 Gao the Grid (数论?)
- ZOJ 1489 2^x mod n = 1 数论
- 【数论】 HDOJ 1930 && ZOJ 2945 And Now, a Remainder from Our Sponsor
- POJ 1284 Primitive Roots 数论原根。
- (Relax 数论1.8)POJ 1284 Primitive Roots(欧拉函数的应用: 以n为模的本原根的个数phi(n-1))
- ZOJ 3233 Lucky Number(数论,容斥原理)
- 【数论】zoj3870
- zoj1489 hdu 1395 (数论)
- zoj3662 Math Magic(数论+dp)
- ZOJ1005 POJ1606 Jugs 数论法
- ZOJ 1136 Multiple(BFS + 数论 同余剪枝 搜索数字的倍数 )
- ZOJ - 4006(数论逆元)
- 【数论-莫比乌斯】SPOJ-7001-Visible Lattice Points 、zoj 3435 Ideal Puzzle Bobble
- 数论zoj 3665
- HDU1395 ZOJ1489 2^x mod n = 1【暴力法+数论】
- zoj 1284 || poj 1528 Perfection
- zoj 1526 (数论)
- poj 1284 Primitive Roots 【原根】【数论】
- zoj 3846 GCD Reduce(数论)
- [zoj 3774]Power of Fibonacci 数论(二次剩余 拓展欧几里得 等比数列求和)