标签:
Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/65535 K (Java/Others)
Total Submission(s): 741 Accepted Submission(s): 291
2.(a/b)%mod=a*b^(mod-2)%mod,mod为素数(可以通过逆元证明)(这个公式的话感觉如果mod为素数的话,直接用逆元也一样的,,可以参考我博客hdu1452)
然后这个题并不难,把2008分解成 251*2^3 然后求因子和用第一个公式去掉分母250,然后可以得到M,在用快速幂计算就好了。
#include <stdio.h> #include <iostream> using namespace std; typedef long long LL; LL pow_mod(LL a,LL n,LL mod){ LL ans = 1; while(n){ if(n&1) ans = a*ans%mod; a=a*a%mod; n=n>>1; } return ans; } int main() { LL N,K; while(scanf("%lld%lld",&N,&K)!=EOF,N&&K) { K = 250*K; LL M = ((pow_mod(251,N+1,K)-1)*(pow_mod(2,3*N+1,K)-1))%K; M = M/250; K/=250; LL ans =pow_mod(2008,M,K); printf("%lld\n",ans); } return 0; }
标签:
原文地址:http://www.cnblogs.com/liyinggang/p/5522847.html