解题报告:输入两个数a和b,求a^b的个位是多少?
一共只有10个数,所以个位必定是有周期的,只要求出周期,然后就算b再大也可以求出来了。
1 #include<cstdio> 2 #include<cstring> 3 #include<iostream> 4 using namespace std; 5 6 int main() { 7 int xh[10000],a,b; 8 while(scanf("%d%d",&a,&b)!=EOF) { 9 if(b == 0) { 10 printf("1 "); 11 continue; 12 } 13 a %= 10; 14 xh[1] = a; 15 int k = 2,d = a*a%10; 16 while(k <= b && d != xh[1]) { 17 xh[k++] = d; 18 d *= a; 19 d%=10; 20 } 21 if(k >= b+1) 22 printf("%d ",xh[k-1]); 23 else printf("%d ",xh[b%(k-1)==0? (k-1):b%(k-1)]); 24 } 25 return 0; 26 }