hdu1452

链接:点击打开链接

题意:求2004的X次幂的所有因数的和对29取模的值是多少

代码:

#include <iostream>

using namespace std;
#define mod 29
long long quickmod(long long a,long long b){
    long long sum=1;
    while(b){
    if(b%2)
    sum=sum*a%mod;
    b/=2;
    a=a*a%mod;
    }
    return sum;
}
int main()
{
    long long a,x,y,z;
    while(cin>>a&&a){               //当gcd(a,b)=1时 s(a*b)=s(a)*s(b);
    x=quickmod(2,2*a+1)-1;          //s(p^n)=1+p+p^2+...+p^n= (p^(n+1)-1)/(p-1)
    y=quickmod(3,a+1)-1;            //s(2004^X)=s(2^2X)*s(3^X)*s(167^X)
    z=quickmod(167,a+1)-1;          //s(2^2X)=2^(2X+1)-1
    z=z*9;                          //s(3^X)=(3^(X+1)-1)/2
    cout<<x*y*z%mod<<endl;          //s(167^X)=(167^(X+1)-1)/166
    }                               //直接求332对29的逆元为9
}


 

 

你可能感兴趣的:(hdu1452)