题意:给定一个N,输出N^N的个位上的值,其中N的取值范围为1<=N<=1,000,000,000。
解题思路:任何两个数相乘的最低位一定是它们最低位相乘所得结果的最低位,如99^99 可转化为求99个9相乘后最低位是什么,而同一个数连乘结果是具有周期性的,周期不大于10,详见代码。
Code:
#include <iostream>
using namespace std;
int main()
{
int i,m,g,h,n;
cin>>m;
for(i=0;i<m;i++)
{
cin>>n;
int a[10][4]={
{0,0,0,0},
{1,1,1,1},
{6,6,4,4},
{1,3,7,7},
{6,6,6,6},
{5,5,5,5},
{6,6,6,6},
{1,7,9,3},
{6,6,4,4},
{9,9,9,9},
};
g=n%10;
h=n%4;
cout<<a[g][h]<<endl;
}
return 0;
}