/ hdoj

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("%dn", 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
*/