hdu1097 - A hard puzzle

来源:互联网 发布:java分支循环语句 编辑:程序博客网 时间:2024/05/29 08:10

地址

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!

0 0