一、题目
题目描述:
程序员小明打了一辆出租车去上班。出于职业敏感,他注意到这辆出租车的计费表有点问题,总是偏大。
出租车司机解释说他不喜欢数字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块钱。
四、要求
时间限制:C/C++ 1秒,其他语言 2秒
空间限制:C/C++262144K,其他语言524288K
五、解题思路
- 首先,我们需要读取输入的计费表的表面读数。
- 我们将遍历小于计费表的表面读数的每一个数字,并根据题目要求进行处理。
- 如果数字中包含4,则直接跳过,否则将其累加到实际费用中。
- 最后,输出实际产生的费用。
六、参考代码
# -*- coding: utf-8 -*-
'''
@File : 2023-B-靠谱的车.py
@Time : 2023/12/31 23:29:53
@Author : mgc
@Version : 1.0
@Desc : None
'''
def calculate_cost(reading):
"""
计算实际产生的费用
Args:
reading (int): 计费表的表面读数
Returns:
int: 实际产生的费用
"""
actual_cost = 0 # 实际费用
# 遍历计费表的表面读数的每一位数字
for digit in range(1, reading+1):
if '4' in str(digit):
continue # 如果数字是4,则跳过
actual_cost += 1 # 否则累加到实际费用中
return actual_cost
# 读取输入的计费表的表面读数
reading = int(input())
# 计算实际产生的费用
actual_cost = calculate_cost(reading)
# 输出实际产生的费用
print(actual_cost)