[热身题][hdoj_1061]Rightmost Digit 右值

// hdoj_1061 Rightmost Digit 右值
// 0MS	228K	253 B	GCC

#include <stdio.h>
int main(vodi)
{
	int i, ncase, m, n, t;
	scanf("%d", &ncase);
	while(ncase--)
	{
		scanf("%ld", &n);
		t = n % 10;
		m = 1;
		for(i = 0; i <= (n-1)%4; i ++)  //此处可换为 i < n%4 + 4;可解决n%4 ==0的情况
		{
			m *= t;;
		}
		printf("%d\n", m%10);
	}
	return 0;
}

/*
末位数      相乘后的末位数
1           1
2           4   8   6   2
3           9   7   1   3
4           6   4
5           5
6           6
7           9   3   1   7
8           4   2   6   8
9           1   9(由于x9是奇数,所以1不会出现)
0           0

由上面的分析可见,每个数相乘后最多有四个结果
所以对一个数n,只需做其对4取余后余数次相乘即可
但是会出现 n%4 == 0 的情况
由于x5^x5的末位数是5,x9^x9的末位数是9
所以将n%4转换为(n-1)%4
*/


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值