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.TimeExe.MemoryCode LengthLanguage
0MS1408K444Bc

总结

取模取余进行数位分离

假设a为一个三位整数,a%10取a的个位数字,a/100取a的百位数字,(a%100)/10取a的十位数字。

Thanks everyone!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值