#t8. BCD数转换修复
BCD数转换修复
BCD数转换修复
题目描述
BCD数是用一个字节来表达两位十进制的数,每四个比特表示一位。如果一个BCD数的十六进制是0x12,它表达的是十进制的12。小明误把所有BCD数当作二进制数转换成十进制输出了,例如BCD的0x12被输出成了十进制的18。你的程序要读入这个错误的十进制数,输出正确的十进制数。
输入格式
输入在一行中给出一个[0, 153]范围内的正整数,保证能转换回有效的BCD数,即该整数转换成十六进制时不会出现A-F的数字。
输出格式
输出对应的正确十进制数。
样例输入 1
18
样例输出 1
12
样例输入 2
0
样例输出 2
0
样例输入 3
153
样例输出 3
99
数据范围
输入整数范围为
提示
- 这题难在读懂题:一个字节装两个十进制位(各占 4 个比特),所以合法 BCD 数读出来的错误值有个上限——是多少?
- 要修复,就把读到的错误值按 16 进制的方式拆成两半,再按十进制拼回去——
/和%各管一半。 - 拿样例检验:
18→12;153→99。
相关
在以下作业中: