HDU-1061,Rightmost Digit(快速幂)

简介: HDU-1061,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:

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.


程序代码:


#include<bits/stdc++.h>
using namespace std;
int quickmul(int n)
{
  int ans=1;
  int temp=n%10;
  while(n)
  {
    if(n&1)//等价于n%2==1 
      ans=(ans*temp)%10;
    temp=(temp*temp)%10;
    n>>=1;//等价于n=n/2 
  }
  return ans;
}
int main()
{
  int a,n,count;
  cin>>n;
  while(n--)
  {
    cin>>a;
    cout<<quickmul(a)<<endl;
  }
  return 0;
}


相关文章
NowCoder | KY11 二叉树遍历
NowCoder | KY11 二叉树遍历
|
机器学习/深度学习
hdu 1061 Rightmost Digit
hdu 1061 Rightmost Digit
33 0
|
Java
hdu 1262 寻找素数对
hdu 1262 寻找素数对
38 0
HDU-1262,寻找素数对(素数打表)
HDU-1262,寻找素数对(素数打表)
HDOJ(HDU) 2504 又见GCD(利用最大公约数反推)
HDOJ(HDU) 2504 又见GCD(利用最大公约数反推)
108 0
|
机器学习/深度学习 网络架构
题解 UVA10212 【The Last Non-zero Digit.】
题目链接 这题在学长讲完之后和看完题解之后才明白函数怎么构造。这题构造一个$f(n)$$f(n)$ $=$ $n$除以 $2^{a}$ $*$ $5^{b}$ ,$a$ , $b$ 分别是 $n$ 质因数分解后$2,5$的个数。
1237 0
|
C++ 人工智能 BI
HDU2032杨辉三角
有点强迫症,主函数必须简洁,但是这里的if判断语句很碍眼,自己也并没有想到什么不画蛇添足的方法使代码更加简洁......
1510 0
|
人工智能
|
机器学习/深度学习
HDOJ(HDU) 2503 a/b + c/d(最大公约数问题)
Problem Description 给你2个分数,求他们的和,并要求和为最简形式。 Input 输入首先包含一个正整数T(T0){ int a = sc.
1060 0