#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

数据范围

输入整数范围为 0≤n≤1530 \le n \le 153

提示

  • 这题难在读懂题:一个字节装两个十进制位(各占 4 个比特),所以合法 BCD 数读出来的错误值有个上限——是多少?
  • 要修复,就把读到的错误值按 16 进制的方式拆成两半,再按十进制拼回去——/ 和 % 各管一半。
  • 拿样例检验:18 → 12;153 → 99。