/*
求解N^N的最右边个位数是多少?
从0到9进行分类
0 0
1 1
2 2 4 8 6 2
3 3 9 7 1 3
4 4 6 4
5 5
6 6
7 7 9 3 1 7
8 8 4 2 6 8
9 9 1 9
这是经历循环的,但是由于数组是从0 开始计数的。而自身应该放在数组下标为1的地方才能正常表示。应为自己的一次方为自己嘛,取余余1为自身。
所以我们应该用最后一个循环数补全第一个数组下标为0的位置。因此代码如下,使用数组进行。
*/
#include<iostream>
using namespace std;
int main()
{
int n,s,num;
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} };
cin>>num;
while(num--)
{
cin>>n;
s=n%10;
if(s==0||s==1||s==5||s==6)
{
cout<<s<<endl;
}else if(s==4||s==9)
{
cout<<a[s][s%2]<<endl;
}else if(s==2||s==3||s==7||s==8)
{
cout<<a[s][s%4]<<endl;
}
}
return 0;
}
求解N^N的最右边个位数是多少?
从0到9进行分类
0 0
1 1
2 2 4 8 6 2
3 3 9 7 1 3
4 4 6 4
5 5
6 6
7 7 9 3 1 7
8 8 4 2 6 8
9 9 1 9
这是经历循环的,但是由于数组是从0 开始计数的。而自身应该放在数组下标为1的地方才能正常表示。应为自己的一次方为自己嘛,取余余1为自身。
所以我们应该用最后一个循环数补全第一个数组下标为0的位置。因此代码如下,使用数组进行。
*/
#include<iostream>
using namespace std;
int main()
{
int n,s,num;
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} };
cin>>num;
while(num--)
{
cin>>n;
s=n%10;
if(s==0||s==1||s==5||s==6)
{
cout<<s<<endl;
}else if(s==4||s==9)
{
cout<<a[s][s%2]<<endl;
}else if(s==2||s==3||s==7||s==8)
{
cout<<a[s][s%4]<<endl;
}
}
return 0;
}