HDU 1061 Rightmost Digit
Too many Rightmost DigitTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission (s): 36563 Accepted Submission (s): 13871
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 shoshould output the rightmost digit of N ^ N.
Sample Input
234
Sample Output
76HintIn 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.
Author Ignatius. L calculates the last digit of N to the power of N. .. For example, 8 ^ 4. It can be viewed as 64 ^ 2 .. This reduces the number of computations by three times. For example, we can first save 8 to 8 ^ 4 .. And then perform the operation repeatedly .. Code
# Include
# Include
# Include
# Include
# Include
# Include
# Include
# Include
# Include
# Include
# Include using namespace std; # define inf 0x6f6f6f6f # define mod 10 long wei (long k) {long n = k; long r = 1; while (k) {if (k & 1) // The k power is an odd number, And a number can be saved. R = r * n % mod; n = n * n % mod; k> = 1; // bitwise operation to speed up. } Return r;} int main () {long k; int t; scanf ("% d", & t); while (t --) {cin> k; long ans = wei (k); cout <