hdu 1299 Diophantus of Alexandria
2012-05-11 09:46
609 查看
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1299
1/x + 1/y = 1/n
因为x,y,n均为正整数,所以x,y均要大于n。
设y=n+k;
那么x=n^2 / k + n
因为x为正整数,所以k为n^2的因子。
因为1 ≤ n ≤ 10^9,所以不能枚举到n求n^2的因子个数。
对于一个数n如果
n=q1^a1 * q2^a2 *...qk^ak;
q1,q2...qk均为n的素因子,那么n的因子个数就可以表示为(a1+1)*(a2+1)*...*(ak+1);
n^2= n*n;
所以n^2=q1^(2*a1) * q2^(2*a2)*...*qk^(2*ak);
n^2的因子个数为(2*a1+1) * (2*a2 +1) *...*(2*ak+1);
code:
View Code
1/x + 1/y = 1/n
因为x,y,n均为正整数,所以x,y均要大于n。
设y=n+k;
那么x=n^2 / k + n
因为x为正整数,所以k为n^2的因子。
因为1 ≤ n ≤ 10^9,所以不能枚举到n求n^2的因子个数。
对于一个数n如果
n=q1^a1 * q2^a2 *...qk^ak;
q1,q2...qk均为n的素因子,那么n的因子个数就可以表示为(a1+1)*(a2+1)*...*(ak+1);
n^2= n*n;
所以n^2=q1^(2*a1) * q2^(2*a2)*...*qk^(2*ak);
n^2的因子个数为(2*a1+1) * (2*a2 +1) *...*(2*ak+1);
code:
View Code
# include<stdio.h> # include<string.h> # define N 32005 int visit ; void init() { int i,j; memset(visit,0,sizeof(visit)); for(i=2;i<=32000;i++) { if(visit[i]==0) { for(j=i+i;j<=32000;j+=i) visit[j]=1; } } } int main() { int i,t,n,ncase,sum,count; init(); scanf("%d",&ncase); for(t=1;t<=ncase;t++) { scanf("%d",&n); sum=1; for(i=2;i<=32000;i++) { if(n==1) break; if(visit[i]==0) { count=0; while(n%i==0) { count++; n/=i; } sum*=(2*count+1); } } if(n!=1) sum*=3; printf("Scenario #%d:\n%d\n\n",t,(sum+1)/2); } return 0; }
相关文章推荐
- hdu 1299 Diophantus of Alexandria (数论)
- hdu-1299 Diophantus of Alexandria(分解素因子)
- HDU-1299 Diophantus of Alexandria 素因子分解
- hdu 1299 Diophantus of Alexandria (素数筛选)
- HDU 1299 Diophantus of Alexandria
- HDU_1299 Diophantus of Alexandria
- HDU_1299 Diophantus of Alexandria
- HDU1299-Diophantus of Alexandria
- Diophantus of Alexandria HDU - 1299(数论)
- hdu 1299 Diophantus of Alexandria(数学题)
- hdu 1299 Diophantus of Alexandria
- 【HDU】 1299 Diophantus of Alexandria
- hdu 1299 Diophantus of Alexandria(数论(因子个数和))
- Hdu 1299 (Diophantus of Alexandria)
- Hdu 1299 Diophantus of Alexandria
- hdu1299 Diophantus of Alexandria
- HDU 1299 Diophantus of Alexandria
- HDU 1299 Diophantus of Alexandria
- HDU 1299 Diophantus of Alexandria
- HDU 1299 Diophantus of Alexandria(数论)