这题也太坑了,不能直接五次方,否则long long也是不够用的。
但是只需要找最后五位,所以每乘一次就mod100000只留下最后五位即可,因为后面的五位与前面位的数字没有关系
关于求一个数字的第几位是多少的问题,一个很简单的数学方法就完成了,不必要用字符串。x的第n位是
x%(10^n)/(10^(n-1)) 只需要仔细回想 %和/ 的性质就能理解了
下面上代码
#include <stdio.h>
#include <stdlib.h>
long long a,b,num;
int main()
{
int t;
scanf("%d",&t);
for (int i=0; i<t; i++)
{
scanf("%lld",&a);
b=a/10000*10000+a/100%10*1000+a%10*100+a%100/10*10+a/1000%10;
num=b;
for (int j = 0; j < 4; j++)
{
num *= b;
num %= 100000; //每次都留下后几位即可
}
printf("case #%d:\n%.5lld\n",i,num); //注意补前面的0
}
return 0;
}