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
Answer
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
int n,i,x,y,a,b;
cin>>n;
for(i=0;i<n;i++)
{
cin>>x;
a=x%10;
if(a==0 || a==1 || a==5 || a==6)
cout<<a<<endl;
else
{
b=x%4+4;
y=pow(a,b);
cout<<y%10<<endl;
}
}
return 0;
}
// 观察0-9 n次方的个位数 即可得出规律
0、1、5、6:均为本身
2:2 4 8 6 2 ...
3:3 9 7 1 3 ...
4:4 6 4 ...
7:7 9 3 1 7 ...
8:8 4 2 6 8 ...
9:9 1 9 ...