N^N的最后一个数,就等于N的最后一个数的N次方。而从1到9的n次方是成规律出现的。。。。。。
//1061
#include<iostream>
#include<vector>
using namespace std;
int main()
{
int n=1;
int count;
int i=1;
int t,y;
long long m;
vector <int> a[10];
while(n<10)
{
while(n)
{
n*=i;
if(n>10) n%=10;
a[i].push_back(n);
if(n==i) break;
}
n++;
i++;
}
scanf("%d",&count);
while(count--&&scanf("%lld",&m)==1)
{
if(m==0) cout<<"0\n";
if(m==1) cout<<"1\n";
t=m%10;
if(t==0&&m!=0)
{
cout<<"0\n";
}
y=a[t].size();
//cout<<m%y-1<<" "<<a[t][0]<<" ";
if(t!=0) //错误原因: 输入0 1111是一个多输出一个零 一个少输出一个零
cout<<a[t][(m-2)%y]<<endl; //m-1
}
return 0;
}