求a的b次方后四位。
输入的第一行是T(不超过1000)。T表示测试部分的个数,每一部分都要求单独计算并按照要求输出结果。
接下来是每个测试部分。第一行给出a, b,0 < a,b< 1000000000。
对于每个测试部分,请输出每个问题的正确答案的最后四位,如果不足四位请前面补0。
2 2 1 3 10
0002 9049
Ps: 快速幂的经典实例。
注意到a的n次方的后四位只与a的n-1次方的后四位有关,故每次运算只取后四位即可。
以下是代码:
#include<stdio.h>
int main()
{
int a,b,t;
long long int ans,x;
scanf("%d",&t);
while(t--)
{
scanf("%d%d",&a,&b);
ans=1;
a=a%10000;
while(b)
{
if(b%2==1)
ans=(ans*a)%10000;
a=(a*a)%10000;
b/=2;
}
printf("%04lld\n",ans);
}
return 0;
}