def calculate_actual_cost(N):actual_cost = 0power = 1 # 当前位的权重(1, 10, 100, ...)while N > 0:digit = N % 10 # 取出当前位的数字if digit > 4:digit -= 1 # 跳过数字 4actual_cost += digit * powerpower *= 9 # 每处理一位,权重乘以 9N //= 10 # 去掉已处理的位return actual_cost# 输入处理def main:N = int(input("请输入计费表的表面读数:"))result = calculate_actual_cost(N)print(result)# 运行主函数if __name__ == "__main__":main问题分析:摘要:def calculate_actual_cost(N):actual_cost = 0power = 1 # 当前位的权重(1, 10, 100, ...)while N > 0:digit = N % 10 # 取出当前位的数字if digit > 4:d
计费表跳过了所有包含数字 4 的读数。
需要将表面读数 NN 转换为实际费用,即计算在跳过所有包含 4 的数字后,NN 对应的实际数字。
算法选择:将问题转化为一个进制转换问题,其中数字 4 被跳过。
可以将表面读数 NN 看作一个“9 进制”数,但跳过数字 4。
实现步骤:遍历 NN 的每一位数字。
对于每一位数字,如果大于 4,则减去 1(因为跳过了 4)。
将处理后的数字转换为实际费用。
来源:小龙马车讯分享
免责声明:本站系转载,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与本站联系,我们将在第一时间删除内容!