Problem G Power et al. Input: Standard Input
Output: Standard Output
Finding the exponent of any number can be very troublesome as it grows exponentially J. But in this problem you will have to do a very simple task. Given two non-negative numbers m and n, you will have to find the last digit of mn in decimal number system.
Input
The input file contains less than 100000 lines. Each line contains two integers m and n (Less than 10^101). Input is terminated by a line containing two zeroes. This line should not be processed.
Output
For each set of input you must produce one line of output which contains a single digit. This digit is the last digit of mn.
Sample Input
2 2
2 5
0 0
Output for Sample Input
4
2
题目大意:求m^n的最后一位数字
打表出0、1、2、3、4、5、6、7、8、9(50次方以内的数)
发现规律,最长的周期为4
(0) 0 0 0 0
(1)1 1 1 1
(2)2 4 8 6
(3)3 9 7 1
(4)4 6 4 6
(5)5 5 5 5
(6)6 6 6 6
(7)7 9 3 1
(8)8 4 2 6
(9)1 9 1 9
AC代码:
#include<iostream> #include<cstdio> #include<string> using namespace std; string a,b; int f[10][4]= { 0,0,0,0, 1,1,1,1, 6,2,4,8, 1,3,9,7, 6,4,6,4, 5,5,5,5, 6,6,6,6, 1,7,9,3, 6,8,4,2, 1,9,1,9 }; int deal() { int p=a[a.size()-1]-'0'; int i,ret=0; for(i=0;i<b.size();i++) ret=(ret*10+b[i]-'0')%4; return f[p][ret]; } int main() { while(cin>>a>>b,!(a=="0" && a==b)) { if(b=="0") cout<<1<<endl; else cout<<deal()<<endl; } return 0; }