HDU 1452
和上题一样,不过,更简单了
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
#include <cmath>
using namespace std;
const int MOD=29;
int quick(int a,int b,int m){
int res=1;
while(b){
if(b&1){
res=(res*a)%m;
}
b=b>>1;
a=(a*a)%m;
}
return res;
}
int main(){
int a,b,c;
a=2;b=3;c=167;
int x;
while(scanf("%d",&x),x){
int ax=2*x; int bx=x; int cx=x;
int ans=1;
int p,q;
p=quick(a,ax+1,MOD);
p=((p-1)%MOD+MOD)%MOD;
q=quick(a-1,MOD-2,MOD);
ans=(ans*((p*q)%MOD))%MOD;
p=quick(b,bx+1,MOD);
p=((p-1)%MOD+MOD)%MOD;
q=quick(b-1,MOD-2,MOD);
ans=(ans*((p*q)%MOD))%MOD;
p=quick(c,cx+1,MOD);
p=((p-1)%MOD+MOD)%MOD;
q=quick(c-1,MOD-2,MOD);
ans=(ans*((p*q)%MOD))%MOD;
printf("%d\n",ans);
}
return 0;
}

浙公网安备 33010602011771号