HDU 2421
由算術(shù)基本定理N=p1^e1*p2^e2....ps^es,可知一個素的因子個數(shù)為(e1+1)*(e2+1)*...*(es+1)。
而N的一人因子必定也有n=p1^k1*p2^k2。。。。*ps^ks的形式。因子個數(shù)形式同上。
而事實(shí)上,即是從ei中選取其中一些來充當(dāng)k1。那么,所有的因子的個數(shù)之和必定是(1+2+...e1+1)*(1+2....e2+1)*...其實(shí)即是拆開相乘,相當(dāng)于有各種組合。而
立方是積性的,所以先把(1^3+2^3+....(e1+1)^3)*(1^3+......)*.......
有公式
1^3+2^3+3^3+...+n^3=(1+2+3+...+n)^2
?
題目可解。
#include <iostream> #include <cstdio> #include <algorithm> #include <cmath> #define LL __int64 using namespace std; int pe[1000],np; const LL MOD=10007; int main(){int a,b;int kase=0;while(scanf("%d%d",&a,&b)!=EOF){np=0;for(int i=2;i*i<=a;i++){if(a%i==0){int c=0;while(a%i==0){c++;a/=i;}pe[np++]=c*b;}}if(a>1){pe[np++]=1*b;}LL ans=1;for(int i=0;i<np;i++){LL tmp=((((LL)2+(LL)pe[i]))*((LL)pe[i]+(LL)1)/2)%MOD;ans=(ans*((tmp*tmp)%MOD))%MOD;}printf("Case %d: %I64d\n",++kase,ans);}return 0; }
轉(zhuǎn)載于:https://www.cnblogs.com/jie-dcai/p/3970377.html
總結(jié)
- 上一篇: java的关于流程结构做的几个案例
- 下一篇: .net framework摘抄与理解