首页 > 代码库 > HDU 1061-Rightmost Digit(快速幂)
HDU 1061-Rightmost Digit(快速幂)
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; }
HDU 1061-Rightmost Digit(快速幂)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。