3 2 3 4 3 3 5 4 4 6
0 2 4
#include<stdio.h>
int main()
{
int i,n,a,b,c;
scanf("%d",&n);
while(n--)
{
__int64 temp,sum;
scanf("%d%d%d",&a,&b,&c);
sum=a%c;
temp=1;
while(b>1)//因为起初的时候,已经是a%c了所以已经是一次方了
{
if(b&1)//奇数的话,单独拉出来
{
temp*=sum;//temp用来存储奇数情况下的所有的乘积
temp%=c;
b--;//单独拉出来,次数减一
}
else
{
sum*=sum;//降幂法
sum%=c;
b/=2;//因为是变化后乘方,所以次方数减半
}
}
printf("%I64d\n",sum*temp%c);
}
return 0;
}hdu 1420(Prepared for New Acmer)(中国剩余定理)(降幂法)
原文地址:http://blog.csdn.net/ice_alone/article/details/40508779