题意:
给一个数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;
}