求13^n,(1<=n<=1300000)
题目描叙:
样例输入:
13
20
样例输出:
253
801
解题思路:
先通过程序找出规律,得知结果的变化周期是100,设a[n]代表13^n最后三位数,可知道a[1]=a[101]=a[201]=……,a[2]=a[102]=a[201]……。
所以得到如下的程序:
//n较小的时候成立
#include < iostream >
using namespace std;
int main()
{
int n;
while(scanf(“%d”,&n)==1)
{
int m=13;
for(int i=1;i < n; i++)
{
m*=13;
m%=1000;
}
cout<<m<<endl;
}
}
//n较大时程序如下
#include < iostream >
using namespace std;
int a[10000]={1,13,169};
int main()
{
int n=2;
int j,i=0;
int m=13;
while(1)
{
m*=13;
m%=1000;
a[n]=m;
n++;
if(n==103)
break;
}
__int64 s;
while(scanf(“%I64d”,&s)==1)
{
__int64 t=s % 100;
cout<<a[t]<<endl;
}
}