Rightmost Digit
Time Limit : 2000/1000ms (Java/Other) Memory Limit : 65536/32768K (Java/Other)
Total Submission(s) : 314 Accepted Submission(s) : 106
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).
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 6HintIn the first case, 3 * 3 * 3 = 27, so the rightmost digit is 7. In the second case, 4 * 4 * 4 * 4 = 256, so the rightmost digit is 6.
找规律,N^N的末位数,多算就找到了
#include<stdio.h> int main(){ // freopen("in.txt","r",stdin); int n; while(scanf("%d",&n)!=EOF){ while(n--){ int a; scanf("%d",&a); if(a%10==0){ printf("0\n"); } else if(a%10==1){ printf("1\n"); } else if(a%10==2){ if(a%4==1){ printf("2\n"); } else if(a%4==2){ printf("4\n"); } else if(a%4==3){ printf("8\n"); } else if(a%4==0){ printf("6\n"); } } else if(a%10==3){ if(a%4==1){ printf("3\n"); } else if(a%4==2){ printf("9\n"); } else if(a%4==3){ printf("7\n"); } else if(a%4==0){ printf("1\n"); } } else if(a%10==4){ if(a%2==1){ printf("4\n"); } else if(a%2==0){ printf("6\n"); } } else if(a%10==5){ printf("5\n"); } else if(a%10==6){ printf("6\n"); } else if(a%10==7){ if(a%4==1){ printf("7\n"); } else if(a%4==2){ printf("9\n"); } else if(a%4==3){ printf("3\n"); } else if(a%4==0){ printf("1\n"); } } else if(a%10==8){ if(a%4==1){ printf("8\n"); } else if(a%4==2){ printf("4\n"); } else if(a%4==3){ printf("2\n"); } else if(a%4==0){ printf("6\n"); } } else if(a%10==9){ if(a%2==1){ printf("9\n"); } else if(a%2==0){ printf("1\n"); } } } } return 0; }