HDOJ 1061 Rightmost Digit(快速幂)

来源:互联网 发布:java项目开发实录 编辑:程序博客网 时间:2024/05/21 17:21

Rightmost Digit




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 should output the rightmost digit of N^N.
 

Sample Input
234
 

Sample Output
76
题目大意:给出一个数N,求N ^ N的最右一位

解题思路:快速幂,由于要求N ^ N个位数上的结果,所以可以求(N % 10) ^ N,再将结果对10取余即可。

代码如下:

#include <cstdio>typedef long long ll;ll mod_pow(ll x,ll n,ll mod){ll res = 1;while(n > 0){if(n & 1)res *= x % mod;x = x * x % mod;n >>= 1; }return res;}int main(){int t;ll n;scanf("%d",&t);while(t--){scanf("%lld",&n);printf("%d\n",mod_pow(n % 10,n,10) % 10);}return 0;}


0 0
原创粉丝点击