Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u
Submit
Status
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
Hint
In 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.
<span style="color:#6633ff;">/******************************************************** author : Grant Yuan time : 2014.7.28 algorithm : 快速幂 *********************************************************/ #include <iostream> #include<cstdio> #include<cstdlib> #include<cstring> #include<algorithm> #define LL long long using namespace std; LL mod_pow(LL x) { LL res=1; LL n=x; while(n>0){ if(n&1) res=res*x%10; x=x*x%10; n>>=1; } return res%10; } int main() { int t;LL n,ans; scanf("%d",&t); while(t--){ scanf("%lld",&n); ans=mod_pow(n); printf("%lld ",ans); } return 0; } </span>