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; }