问题描述
给定一个正整数N,你应该输出N ^ N的最右边的数字。
输入
输入包含多个测试用例。输入的第一行是单个整数T,它是测试用例的数量。T测试用例如下。
每个测试用例都包含一个正整数N(1 <= N <= 1,000,000,000)。
每个测试用例都包含一个正整数N(1 <= N <= 1,000,000,000)。
输出
对于每个测试用例,你应该输出N ^ N的最右边的数字。
示例输入
2
3
4
示例输出
7
6
提示
在第一种情况下,3 * 3 * 3 = 27,所以最右边的数字是7。
在第二种情况下,4 * 4 * 4 * 4 = 256,所以最右边的数字是6。这道题我使用的是找规律的方法,在网上还看到了快速幂这种方法,有兴趣的可以自己查一下~
代码:
#include <stdio.h>
int main() {
int a[10][4]={{0},{1},{6,2,4,8},{1,3,9,7},{6,4},{5},{6},{1,7,9,3},{6,8,4,2},{1,9}}; //0~9对应的情况
int N,ans,temp,i;
long long n;
while (scanf("%d",&N)!=EOF) {
for(i=0;i<N;i++)
{
scanf("%lld",&n);
temp=n%10;
if(temp==0||temp==1||temp==5||temp==6)
ans=temp;
else if(temp==4||temp==9)
ans=a[temp][n%2];
else
ans=a[temp][n%4];
printf("%d\n",ans);
}
}
return 0;
}