出租车计费 、靠谱的车

简介: 出租车计费 、靠谱的车

题目描述:出租车计费 、靠谱的车

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


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


比如:


23再多一块钱就变为25;

39再多一块钱变为50;

399再多一块钱变为500;

小明识破了司机的伎俩,准备利用自己的学识打败司机的阴谋。


给出计费表的表面读数,返回实际产生的费用。

输入描述

只有一行,数字N,表示里程表的读数。

(1<=N<=888888888)。

输出描述

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

用例

输入 5

输出 4

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

输入 17

输出 15

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

输入 100

输出 81

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

解题思路

计费表从1开始计数,直到3,然后跳过4,继续从5计数。这意味着计费表上的每一位数字实际上只有9种可能的值:0, 1, 2, 3, 5, 6, 7, 8, 9(跳过了4)。因此,这个计费表实际上是在使用一个基数为9的数制系统。


输入:5

输出:4


输入:17

输出:15


输入:100

输出:81


输入:27

输出:24


输入:58

输出:43

通过将表面读数视为9进制数,并将其转换为10进制数,同时考虑到跳过的4,我们可以得到实际产生的费用。

代码

// 出租车计费/靠谱的车
#include <stdio.h>
#include <string.h>

int main() {
    char line[10];
    scanf("%s", line); // 读取输入的表面读数

    int correct = 0;           // 初始化实际产生的费用
    int length = strlen(line); // 获取输入字符串的长度

    // 遍历读数的每一位数字
    for (int i = 0; i < length; i++) {
        int digit = line[i] - '0'; // 将字符转换为数字

        // 如果数字大于4,则需要减1,因为跳过了数字4
        if (digit > 4) {
            digit--;
        }

        correct = correct * 9 + digit; // 更新实际产生的费用
        // 初始一定是0*9+最高位数字,接着最高位数字乘9+次高位(处理之后的次高位)
    }

    // 输出实际产生的费用
    printf("%d\n", correct);

    return 0;
}
相关文章
|
存储
Vue3 实现 PDF 文件在线预览功能
Vue3 实现 PDF 文件在线预览功能
2762 0
|
Java 应用服务中间件 Maven
Servlet初识—编写hello world+使用smart Tomcat插件部署(二)
Servlet初识—编写hello world+使用smart Tomcat插件部署
1225 0
Servlet初识—编写hello world+使用smart Tomcat插件部署(二)
|
7月前
|
存储 机器学习/深度学习 算法
|
机器学习/深度学习 编解码 知识图谱
YOLOv11改进策略【卷积层】| HWD,引入`Haar小波变换`到下采样模块中,减少信息丢失
YOLOv11改进策略【卷积层】| HWD,引入`Haar小波变换`到下采样模块中,减少信息丢失
724 0
YOLOv11改进策略【卷积层】| HWD,引入`Haar小波变换`到下采样模块中,减少信息丢失
|
运维 安全 网络安全
没有谁不可或缺,宝塔的3个替代品
随着软件数量和复杂度增加,宝塔面板因用户友好的界面和丰富功能成为首选。但技术进步和开源社区发展催生了Websoft9、FastPanel和Urlos等新工具,它们在特定领域提供了与宝塔面板相媲美或更优的解决方案。本文介绍这三款工具的特点,旨在为用户提供更多选择参考。
1457 0
没有谁不可或缺,宝塔的3个替代品
|
存储 人工智能 异构计算
清华&哈工大提出极限压缩方案:1bit量化,能力同时保留83%
【2月更文挑战第22天】清华&哈工大提出极限压缩方案:1bit量化,能力同时保留83%
450 1
清华&哈工大提出极限压缩方案:1bit量化,能力同时保留83%
|
Web App开发 测试技术 项目管理
【Docker项目实战】使用Docker部署Servas自托管书签管理工具
【6月更文挑战第5天】使用Docker部署Servas自托管书签管理工具
555 1
【Docker项目实战】使用Docker部署Servas自托管书签管理工具
|
安全 Shell Linux
openEuler OECA认证课程习题答案
本文整理了OECA认证课程的每章节课后习题答案。
808 2
openEuler OECA认证课程习题答案
|
存储 数据安全/隐私保护 Python
python批量压缩文件并生成解压密码
该教程指导安装Python库`py7zr`以处理7z压缩文件。接着,提供了一个Python脚本,该脚本遍历指定目录,对每个文件创建加密的7z压缩包,并为每个文件生成独特密码,密码存储在文本文件中。要运行脚本,将其保存为`.py`文件并在命令行使用`python`命令执行。注意,路径需根据操作系统调整,且应使用原始字符串避免`\`的转义问题。
517 0
|
存储 Shell 程序员
使用 Python 和 Pygame 制作游戏:第一章到第五章
使用 Python 和 Pygame 制作游戏:第一章到第五章
760 0