因子和
http://acm.hdu.edu.cn/showproblem.php?pid=1452
1 /** 2 因子和问题: 3 S(6)=1+2+3+6=12;S(5)=1+5=6; 4 S(30)=1+2+3+5+6+10+15+30=72; 5 可知: 6 S(30)=S(5*6)=S(5)*S(6); 7 因子和积性函数,当gcd(a,b)=1时要S(a*b)=S(a)*S(b) 8 如果p是素数 9 S(p^n)=1+p+p^2+p^3+……+p^n=(p^(n+1)-1)/(p-1) 10 11 %运算法则 1. (a*b)%p=(a%p)*(b%p) 12 %运算法则 2. (a/b)%p=(a*b^(-1)%p) 13 b^(-1)是b模p的逆元,即a*b%p=1; 14 例如: 15 2的逆元素是15 (%29),因为2*15=30%29=1 16 21的逆元素是18 (%29),因为21*18=378%29=1 17 **/ 18 //求2004^x的因子和 19 #include <iostream> 20 using namespace std; 21 int kpow(int a,int n,int mod) 22 { 23 int ans; 24 if(n==0) return 1; 25 int temp=kpow(a,n/2,mod)%mod; 26 ans=temp*temp%mod; 27 if(n%2) ans=temp*temp*a%mod; 28 return ans; 29 } 30 int main() 31 { 32 int n,a,b,c,ans,mod=29; 33 while(cin>>n,n) 34 { 35 a=kpow(2,2*n+1,mod)-1; 36 b=(kpow(3,n+1,mod)-1)*15%29; 37 c=(kpow(22,n+1,mod)-1)*18%29; 38 ans=a*b*c%29; 39 cout<<ans<<endl; 40 } 41 }