题目描述:
求13的n次方(12<n≤130000000000)的最后三位数。例如:13的13次方的最后三位数是253,13的20次方的最后三位数是801。
输入:
有多组测试数据
每组测试数据一行,即整数n。以文件结尾符结束。
输出:
输出13的n次方的最后三位数。
样例输入:
13 20
样例输出:
253 801
源代码:
#include <stdio.h>
#include <stdlib.h>
int main()
{
long long n;
int sum=1;
while( scanf("%lld",&n)!=EOF)//把值赋给n
{
n=n%100;//n每100一次循环
for(int i=0; i<n; i++)//求13的n次方
{
sum=sum*13%1000;
}
printf("%03d\n",sum);//输出后三位数
sum=1;
}
return 0;
}
解题思路:
输入一个数n,求13的n次方的后三位发现每100次一个循环。对n取余。再进入循环求出13n次方的后三位。
算法步骤:
1)输入一个数,把它赋值给n
2)对n用100取余
3)求13的n次方
4)输出n次方的后三位
5)Sum重新赋值1
遇到的问题:
数据溢出
解决方法:把int用long long替换并在算13次方时在不影响后三位的情况下缩小数值