华为OD机试 2024E卷题库疯狂收录中,刷题点这里
专栏导读
本专栏收录于《华为OD机试(JAVA)真题(E卷+D卷+A卷+B卷+C卷)》。
刷的越多,抽中的概率越大,私信哪吒,备注华为OD,加入华为OD刷题交流群,每一题都有详细的答题思路、详细的代码注释、3个测试用例、为什么这道题采用XX算法、XX算法的适用场景,发现新题目,随时更新,全天CSDN在线答疑。
一、题目描述
程序员小明打了一辆出租车去上班。出于职业敏感,他注意到这辆出租车的计费表有点问题,总是偏大.出租车司机解释说他不喜欢数字4,所以改装了计费表,任何数字位置遇到数字4就直接跳过,其余功能正常
比如:
1.23再多一块钱就变为25
2.39再多一块钱变为50;
3.399再多一块钱变为500;
小明识破了司机的伎俩,准备利用自己的学识打败司机的阴谋,给出计费表的表面读数,返回实际产生的费用
二、输入描述
输入一个数字N,表示里程表的读数。
三、输出描述
一个正整数,实际产生的费用。
四、解题思路
很简单的一道逻辑分析题。
五、Java算法源码
package com.guor.od;
import java.util.*;
public class OdTest {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int input = sc.nextInt();
int sum = input;
// 跳过了多少个4
int skip = 0;
// 当前位置的数
int current = 0;
int j = 1;
while (sum > 0) {
if (sum % 10 > 4) {
skip += (sum % 10 - 1) * current + j;
} else {
skip += (sum % 10) * current;
}
current = current * 9 + j;
j *= 10;
sum = sum / 10;
}
System.out.println(input - skip);
}
}
六、效果展示
1、输入
15
2、输出
13
3、说明
15表示计费表的读数。
13表示实际产生的费用。
因为跳过了4和14。
🏆下一篇:华为OD机试 - 简易内存池 - 逻辑分析(Java 2024 D卷 200分)
🏆本文收录于,华为OD机试(JAVA)真题(E卷+D卷+A卷+B卷+C卷)
刷的越多,抽中的概率越大,私信哪吒,备注华为OD,加入华为OD刷题交流群,每一题都有详细的答题思路、详细的代码注释、3个测试用例、为什么这道题采用XX算法、XX算法的适用场景,发现新题目,随时更新,全天CSDN在线答疑。