题目描述
程序员小明打了一辆出租车去上班。出于职业敏感,他注意到这辆出租车的计费表有点问题,总是偏大。
出租车司机解释说他不喜欢数字4,所以改装了计费表,任何数字位置遇到数字4就直接跳过,其余功能都正常。
比如:
23再多一块钱就变为25;
39再多一块钱变为50;
399再多一块钱变为500;
小明识破了司机的伎俩,准备利用自己的学识打败司机的阴谋。
给出计费表的表面读数,返回实际产生的费用。
输入描述
只有一行,数字N,表示里程表的读数。
(1<=N<=888888888)。
输出描述
一个数字,表示实际产生的费用。以回车结束。
示例1(示例仅供调试,后台判题数据一般不包含示例)
输入
17
输出
15
示例2(示例仅供调试,后台判题数据一般不包含示例)
输入
100
输出
81
完整代码(注释解题思路)
🙏考试题目大同小异,多练习真题是通过考试的捷径。
# 接收输入的里程表读数
N=int(input())
# 定义变量balance,表示里程表数和实际费用的差额
balance=0
# i表示里程表读数,初始化为1
i=1
# 模拟里程表计费的过程:里程表读数从1开始,到N结束
# 如果里程表读数中包含数组4,则把4替换为5,计算此时的差额并相加,同时里程表读数赋值为跳变后的值
# 否则里程表读数每次加1
while i<=N:
if str(i).count("4")>0:
temp=str(i).replace('4','5')
balance+=(int(temp)-i)
i=int(temp)
else:
i+=1
# 将最终的里程表读数减去差额,为实际产生的费用
print(N-balance)