出租车计费/靠谱的车

题目描述

程序员小明打了一辆出租车去上班. 出于职业敏感, 他注意到这辆出租车的计费表有点问题, 总是偏大.

出租车司机解释说他不喜欢数字4, 所以改装了计费表, 任何数字位置遇到数字4就直接跳过, 其余功能都正常.

比如:

  • 23再多一块钱就变为25
  • 39再多一块钱变为50
  • 399再多一块钱变为500

小明识破了司机的伎俩, 准备利用自己的学识打败司机的阴谋. 给出计费表的表面读数, 返回实际产生的费用.

输入描述

只有一行, 数字N, 表示里程表的读数, 1 <= N <= 888888888.

输出描述

一个数字, 表示实际产生的费用, 以回车结束.

示例1

输入:

5

输出:

4

说明: 5表示计费表的表面读数, 4表示实际产生的费用其实只有4块钱.

示例2

输入:

17

输出:

15

说明: 17表示计费表的表面读数, 15表示实际产生的费用其实只有15块钱.

示例3

输入:

100

输出:

81

说明: 100表示计费表的表面读数, 81表示实际产生的费用其实只有81块钱.

题解

Python

def main():
    # 读取输入
    line = input().strip()

    # 考虑使用9进制
    # 遍历所有的输入字符, 将它转换成数字
    real_num = 0
    for char in line:
        digit = int(char)
        # 原先的数字跳过了4, 我们把它还原
        if digit > 4:
            digit -= 1
        # 将9进制转换成10进制
        real_num = real_num * 9 + digit
    print(real_num)

if __name__ == "__main__":
    main()