Rightmost Digit
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 32258 Accepted Submission(s): 12403
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 4O(logn)的复杂度就是快QAQ题意 :求n^n%10 n<1000000000#include <iostream> #include <cstring> #include <cstdio> #include <cctype> #include <cstdlib> #include <algorithm> #include <set> #include <vector> #include <string> #include <map> #include <queue> using namespace std; #define LL long long LL multimod(LL a,LL n,LL m) { LL ans=1,tem=a; while(n) { if(n&1) ans=ans*tem%m; tem=tem*tem%m; n/=2; } return ans; } int main() { LL a,b;int T; cin>>T; while(T--) { cin>>a; cout<<multimod(a,a,10)<<endl; } return 0; }