本文共 1073 字,大约阅读时间需要 3 分钟。
题目链接:
题意:求N的因子的约数的个数的立方和,
可以把A分解素因子A = p1^a1 * p2^a2....pk^ak
所以A 的因子的个数为(1+a1)*(1+a2)....*(1+ak)
1~p1^a1 的因子的约数的个数的立方和为s1=1^3 + 2^3 +......+(1+a1)^3 = (a1+1)^2*(a1+2)^2/4
.
.
1~pk^ak 的因子的约数的个数的立方和为sk=1^3 + 2^3 +......+(1+ak)^3 = (ak+1)^2*(ak+2)^2/4
所以 A的因子的约数的个数的立方和为s1*s2*....*sk;
如果A = 72 = 2^3 * 3^2
A的因子个数为(1+3)(1+2)=12 有1 2 3 4 6 8 9 12 18 24 36 72
#include#include typedef long long LL;int main(){ LL a,b,p = 1; while(scanf("%lld%lld",&a,&b)!=EOF) { LL k,ret,sum = 1 ; for(LL i = 2 ; i <= sqrt(a);i ++) { k = 0 ; if(a % i == 0) { while(a % i == 0) { k ++ ; a /= i; } ret = ((k*b + 1)*(k*b + 2) / 2) % 10007 ; ret *= ret ; sum = (sum*ret) % 10007; } } if(a > 1) { ret = ((1+b)*(b+2) / 2) % 10007 ; ret *= ret ; sum = (sum*ret) % 10007; } printf("Case %lld: %lld\n",p++,sum); }}
转载地址:http://zysgi.baihongyu.com/