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
先展示未通过验证的代码:
//ACM 1061:Rightmost Digit
#include <iostream>
using namespace std;
int main()
{
int T,N,r_n=1;
cin >> T;
while(T--)
{
cin >> N;
if(N < 1 || N > 1000000000)
break;
if(N % 10 == 4 || N % 10 == 8)
r_n = 6;
else
if(N % 10 == 0)
r_n = 0;
else
{
int k = N % 4;
for (int i = 0;i < k;i++)
{
r_n *= N;
r_n %= 10;
}
}
cout << r_n << endl;
r_n=1;
}
return 0;
}
分析如图:
下面是经过修改验证通过的代码:
#include<iostream>
using namespace std;
int main()
{
int T,N,k,temp;
cin >> T;
while(T--)
{
temp = 1;
cin >> N;
k = (N - 1) % 4;
N = N % 10;
for(int i = 0;i <= k;i++)
temp *= N;
//****************错误代码*********************//
/*
T = N % 4;
N = N % 10;
for(int i = 0;i < T;i++)//此处忽略了T等于零的情景
temp *= N;
*///******************************************//
cout << temp % 10 << endl;
}
return 0;
}