放了一周假,刷刷水题,快速幂取模加找循环节,循环节是20。
#include<iostream>
#include<algorithm>
#include<string.h>
#include<stack>
#include<queue>
#include<math.h>
#include<cstdio>
using namespace std;
int f[1111];
int modexp(int a,int b,int n)
{
int ret=1;
while(b)
{
if(b&1) ret=ret*a%n;
a=(a*a)%n;
b>>=1;
}
return ret;
}
int main()
{
int n,t,i,c;
f[1]=1;
f[2]=4;
for(i=3;i<=1000;i++)
{
f[i]=modexp(i,i,10);
if(f[i]==f[2] && f[i-1]==f[1])
break;
}
c=i-2;
scanf("%d",&t);
while(t--)
{
scanf("%d",&n);
n=n%c;
if(!n) printf("%d\n",f[c]);
else printf("%d\n",f[n]);
}
return 0;
}