首页 > 代码库 > HDU 1452

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;}

  

HDU 1452