Problem Description
Given a positive integer N, you should output the most right digit of N^N.
Input
The input contains several test cases. The first line of the input is a single integer T which is the number of test cases. T test cases follow.Each test case contains a single positive integer N(1<=N<=1,000,000,000).
Output
For each test case, you should output the rightmost digit of N^N.
Sample Input
2
3
4
Sample Output
7
6
#include<iostream>
using namespace std;
int main()
{
int a[10][2] ={{0},{1},{4,6},{7,3},{6},{5},{6},{3,7},{6,4},{9}};//每个不同数字的N次方的结果的可能性列举
int rows,tmp;
cin>>rows;
int *arr = new int[rows];
for(int i = 0;i<rows;i++)
cin>>arr[i];
for(int i = 0;i<rows;i++)
{
tmp = arr[i]%10;
switch(tmp)
{
case 0:
cout<<a[0][0]<<endl;
break;
case 1:
cout<<a[1][0]<<endl;
break;
case 2:
{
if((arr[i]-tmp)%20 == 0)//减去结尾数字求得除以20的余数是否为0
cout<<a[2][0]<<endl;
else
cout<<a[2][1]<<endl;
break;
}
case 3:
{
if((arr[i]-tmp)%20 == 0)
cout<<a[3][0]<<endl;
else
cout<<a[3][1]<<endl;
break;
}
case 4:
cout<<a[4][0]<<endl;
break;
case 5:
cout<<a[5][0]<<endl;
break;
case 6:
cout<<a[6][0]<<endl;
break;
case 7:
{
if((arr[i]-tmp)%20 == 0)
cout<<a[7][0]<<endl;
else
cout<<a[7][1]<<endl;
break;
}
case 8:
{
if((arr[i]-tmp)%20 == 0)
cout<<a[8][0]<<endl;
else
cout<<a[8][1]<<endl;
break;
}
case 9:
cout<<a[9][0]<<endl;
break;
}
}
return 0;
}