hdu1061 Rightmost Digit N的N次方

解题代码如下,时间复杂度为O(n)的必然超时,只需要计算N的最后一位数(设为a)的N次方的尾数即可,计算a的N次方时得到的尾数有周期T,例如

对于数字0~9, 它们的N次方,我们只看最后一个数字:
0^1=0; 0^2=0; 循环周期T=1;
1^1=1; 1^2=1; 循环周期T=1;
2^1=2; 2^2=4; 2^3=8; 2^4=6 2^5=2; 循环周期T=4;
3^1=3; 3^2=9; 3^3=7; 3^4=1;3^5=3; 循环周期T=4;
4^1=4; 4^2=6; 4^3=4; 循环周期T=2;

#include<iostream>
using namespace std;
int main()
{
	int T,a,b,n;
	cin>>T;
	while(T--)
	{
		cin>>n;
		int temp,result=1;
		a=n%10;
		b=n%4+4;
		while(b--)
		{
			result*=a;
			result=result%10;
		}
		cout<<result<<endl;
	}

	
	return 0;
}

这样就能通过了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值