描述
求13的n次方(12<n≤130000000000)的最后三位数。例如:13的13次方的最后三位数是253,13的20次方的最后三位数是801。
输入
有多组测试数据,每组测试数据一行,即整数n。以文件结尾符结束。
输出
输出13的n次方的最后三位数
样例输入
13 20
样例输出
253 801
提示
64位整型用 long long 表示,格式串为"%lld"
#include<stdio.h>
int main()
{
__int64 a,x,y;
while(scanf("%I64d",&y)!=EOF) // 注意:只能用于正次幂 即 y>=0 还要防止次数太高会溢出
{
a=1;x=13;
while(y) // c=(c*c)%1000 等价于 c=((c%1000)*(c%1000))%1000 取余
{
if(y%2==1)
{
a=((a%1000)*(x%1000))%1000;
}
x=((x%1000)*(x%1000))%1000;
y/=2;
}
if(a==0)
{
printf("000\n");
}
else if(a<10)
{
printf("00%I64d\n",a);
}
else if(a<100)
{
printf("0%I64d\n",a);
}
else
printf("%I64d\n",a);
}
return 0;
}