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

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;
}

 

HDU-1061,Rightmost Digit(快速幂)HDU-1061,Rightmost Digit(快速幂) Forever+Young 发布了271 篇原创文章 · 获赞 279 · 访问量 2万+ 私信 关注
上一篇:7-5 堆中的路径 (25分)


下一篇:Lintcode 37. Reverse 3-digit Integer 反转一个3位整数