Rightmost Digit
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 48109 Accepted Submission(s): 18247
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.求最后一位,首先我想到的不是快速幂对10取余数,我想到的是打表,最后一位只跟底数最后一位有关,总共9个数,打表应该会更快。但是我还是选择快速幂。#include<stdio.h> __int64 fff(__int64 x,__int64 y) { __int64 ans=1; x=x%10; while(y) { if(y%2==1) ans=(ans*x)%10; x=(x*x)%10; y=y/2; } return ans; } int main() { int t; __int64 a; scanf("%d",&t); while(t--) { scanf("%I64d",&a); printf("%I64d\n",fff(a,a)); } return 0; }