其他分享
首页 > 其他分享> > 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

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

 

Forever+Young 发布了271 篇原创文章 · 获赞 279 · 访问量 2万+ 私信 关注

标签:case,HDU,digit,temp,1061,Digit,int,ans,test
来源: https://blog.csdn.net/weixin_43823808/article/details/104060972