题目:
http://acm.hdu.edu.cn/showproblem.php?pid=1097
题意:
求a的b次方的最后一位。
题解:
直接从例子入手,
第一组数据 7 66,结果如下(只要最后一位所以模10)
7 9 3 1 7 9···
循环节为4,即结果在4个数值内循环出现。
第二组数据 6 800,结果如下
6 6 6 6···
循环节为1
···
数位只有10种情况,所以循环节不会大于10
代码:
#include<cstdio>
int v[11];
int main()
{
int a,b;
while(~scanf("%d%d",&a,&b))
{
int i;
a=a%10;
v[1]=a;
int xunhuan;
for(i=2;i<=10;i++)
{
v[i]=(v[i-1]*a)%10;
if(v[i]==a)
{
xunhuan=i-1;
break;
}
}
b=b%xunhuan;
if(b==0) printf("%d\n",v[xunhuan]);
else printf("%d\n",v[b]);
}
return 0;
}