HDU1061 Rightmost Digit

题意:

求N^N的最右位数字

快速幂解决

#include<cstdio>
#include<algorithm>
using namespace std;
int main()
{
	int total;
	scanf("%d",&total);
	while(total--)
	{
		int n;
		scanf("%d",&n);
		int m=n;//n^m
		int ans=1;
		n%=10;
		while(m)
		{
			if(m&1)//m为奇数
			{
				ans*=n;
				ans%=10;
			}
			m>>=1;
			n*=n;
			n%=10;
		}
		printf("%d\n",ans%10);
	}
	return 0;
}


你可能感兴趣的:(快速幂)