HDU 1097 A hard puzzle

解题报告:输入两个数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 }
View Code
原文地址:https://www.cnblogs.com/xiaxiaosheng/p/3275377.html