问题 I: 还是a ^ b
描述
求a的b次方后四位。
格式
输入格式
输入的第一行是T(不超过1000)。T表示测试部分的个数,每一部分都要求单独计算并按照要求输出结果。
接下来是每个测试部分。第一行给出a b,0 < a,b <= 100。
输出格式
对于每个测试部分,请输出每个问题的正确答案的最后四位,如果不足四位请前面补0。
样例
样例输入 Copy
2
2 1
3 10
源代码
nclude<stdio.h>
int main()
{
int n,a,b,i,j,z;
scanf("%d",&n);
for(j=1;j<=n;j++)
{
scanf("%d %d",&a,&b);
z=1;
for(i=1;i<=b;i++)
{
z=z*a%10000;
}
if(z>=1000)
printf("%d\n",z);
else if(z<1000&&z>=100)
printf("0%d\n",z);
else if(z<100&&z>=10)
printf("00%d\n",z);
else if(z<10&&z>0)
printf("000%d\n",z);
}
return 0;
}
总结问题:
1.a的b次方的数据可能会特别大,即使long long int 型也无法存储,这个时候就需要用到快速幂的方法简化计算
2.快速幂基本公式(a*b)%d=(a%d*b%d)%d
3.不足四位数字时取余可直接用04%d