标签:
Description
Input
Output
Sample Input
Sample Output
Hint
In the first case, 3 * 3 * 3 = 27, so the rightmost digit is 7. In the second case, 4 * 4 * 4 * 4 = 256, so the rightmost digit is 6.
方法一:
1 #include <iostream> 2 using namespace std; 3 int a[25]={0,1,4,7,6,5,6,3,6,9,0,1,6,3,6,5,6,7,4,9,0}; 4 int main() 5 { 6 int b,n; 7 cin>>b; 8 while(b--) 9 { 10 cin>>n; 11 cout<<a[n%20]<<endl; 12 } 13 return 0 ; 14 }
方法二:
1 #include<stdio.h> 2 int my_power(int m, int n); // 求m的n次方的尾数 3 int main() 4 { 5 int cases, n; 6 scanf("%d", &cases); 7 while(cases--) 8 { 9 scanf("%d", &n); 10 printf("%d\n", my_power(n, n)); 11 } 12 13 return 0; 14 } 15 16 int my_power(int m, int n) 17 { 18 m = m%10; 19 if(n == 1) 20 return m; 21 if(n%2 == 0) 22 return ( my_power(m*m, n/2) ) % 10; 23 else 24 return ( my_power(m*m, n/2)*m ) % 10; 25 }
快速幂的时间复杂度是O(logn),n = 10亿时,大约32次递归调用就能出结果,效率极大的提高了
标签:
原文地址:http://www.cnblogs.com/wangmengmeng/p/4552455.html