出租车计费 、靠谱的车

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

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

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


出租车司机解释说他不喜欢数字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;
}
相关文章
|
11月前
|
运维 监控 机器人
八爪鱼RPA机器人助您轻松获取建筑钢材市场最新价格!
八爪鱼rpa可以自动化执行价格获取任务,大大节省了人力资源和时间成本。同时,它的数据抓取和整理过程几乎没有误差,确保用户获取到的价格信息是准确可靠的。
|
传感器 机器学习/深度学习 人工智能
出租车司机的末路?
无人驾驶汽车作为人工智能和汽车技术的重要结合,被视为汽车行业未来发展的重要趋势。无人驾驶技术的兴起将彻底改变人们对于汽车的认知和使用方式,带来更安全、便利和高效的出行体验。本文将介绍无人驾驶汽车的定义、原理、应用和未来发展前景,解析无人驾驶汽车带来的重大变革。
|
人工智能 达摩院 自然语言处理
“喊一嗓子”就能买票!北京机场地铁全线开通语音购票
从首都机场到北京市区,你是否遇到过不知道该怎么坐地铁买票换乘的问题? 如今,语音AI来了,“喊一嗓子”就能快速购票进站!
283 0
“喊一嗓子”就能买票!北京机场地铁全线开通语音购票
|
安全
耗时3年,柬埔寨学生自制飞行汽车!10分钟最多飞行1公里,还是用的学校座椅
说到飞行汽车,不少人第一印象可能都会想到日本创业公司SkyDrive,此前根据朝日新闻报道,这款车最早可能会在2023年进行限购,2026年将实现量产。
135 0
耗时3年,柬埔寨学生自制飞行汽车!10分钟最多飞行1公里,还是用的学校座椅
下一篇
无影云桌面