标签:
| Time Limit: 1000MS | Memory Limit: 65535KB | 64bit IO Format: |
Description
Input
Output
Sample Input
2 10 10000000 5 100 1 0 2 37
Sample Output
1024 0 0
//模版题,主要是考虑到1e18的巨大,普通的快速幂会爆LL 所以在相乘的地方用上快速乘,避免爆LL。
#include"cstdio"
long long mod_mul(long long a,long long b,long long p) {
long long r=0;
long long t=a;
while(b) {
if(b&1) r=(r+t)%p;
t=(t<<1)%p;
b>>=1;
}
return r;
}
long long mod_pro(long long a,long long b,long long p) {
long long r=1;
long long t=a;
while(b) {
if(b&1) r=mod_mul(r,t,p)%p;
t=mod_mul(t,t,p)%p;
b>>=1;
}
return r;
}
int main(){
long long a,b,mod;
while(~scanf("%I64d%I64d%I64d",&a,&b,&mod)){
printf("%I64d\n",mod_pro(a,b,mod));
}
return 0;
}
标签:
原文地址:http://www.cnblogs.com/HDMaxfun/p/5721357.html