hdu1097 - A hard puzzle
地址
http://acm.hdu.edu.cn/showproblem.php?pid=1097
定位
- 查表
- 找规律
分析
- 由乘法规则,两个乘数的积的个位数字即为乘数个位数字之积的个位数。求ab的个位数字,在每次乘法运算之前,取乘数的个位数字相乘;乘法运算之后,取积的个位数存储或输出。
- 结果的规律性还是很明显的,循环周期为4,查表即可。
a%10
求底数的个位数字,b%4
用于查表。
代码
#include <stdio.h>
#include <stdlib.h>
int table[10][4] = {
{
0,0,0,0},
{
1,1,1,1},
{
2,4,8,6},
{
3,9,7,1},
{
4,6,4,6},
{
5,5,5,5},
{
6,6,6,6},
{
7,9,3,1},
{
8,4,2,6},
{
9,1,9,1}};
int main()
{
int a,b,aa,bb;
while(scanf("%d*c",&a) != EOF)
{
scanf("%d*c",&b);
aa = a % 10;
bb = (b - 1) % 4;
printf("%d\n",table[aa][bb]);
}
return 0;
}
性能
Exe.Time | Exe.Memory | Code Length | Language |
---|---|---|---|
0MS | 1408K | 444B | c |
总结
取模取余进行数位分离
假设a为一个三位整数,a%10
取a的个位数字,a/100
取a的百位数字,(a%100)/10
取a的十位数字。
Thanks everyone!
还没有评论,来说两句吧...