题意:
给一个数n,设它有因子a1,a2,a3..am,每个因子a[i]的因子个数为bi,求sum(b1^3+b2^3+...b^m)。
思路:
用到两个公式sum(1^3+2^3...k^3)==(k*(k+1)/2)^2,设n=x1^y1*x2^y2...xt^yt,那么n的因子个数(y1+1)*(y2+1)...*(yt+1).设T(x)==1^3+2^3+..x^3,结果为T(y1+1)*T(y2+1)*...T(yt+1)。
代码:
//poj 3604
//sepNINE
#include <iostream>
using namespace std;
int main()
{
int cases;
scanf("%d",&cases);
while(cases--){
int n;
scanf("%d",&n);
if(n==1){
printf("1\n");
continue;
}
int sum=1,i;
for(i=2;i<=n;++i){
if(i*i>n){
sum*=9;
break;
}
int x=0;
while(n%i==0){
++x;
n/=i;
}
if(x>0)
sum*=((x+1)*(x+1)*(x+2)*(x+2)/4);
}
printf("%d\n",sum);
}
return 0;
}