目录
- 专栏导读
- 一、题目描述
- 二、输入描述
- 三、输出描述
- 四、解题思路
- 五、Java算法源码
- 六、效果展示
- 1、输入
- 2、输出
- 3、说明
华为OD机试 2023B卷题库疯狂收录中,刷题点这里
专栏导读
本专栏收录于《华为OD机试(JAVA)真题(A卷+B卷)》。
刷的越多,抽中的概率越大,每一题都有详细的答题思路、详细的代码注释、样例测试,发现新题目,随时更新,全天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;// 跳过了多少个4int 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机试 - 荒岛求生 - 栈Stack(Java 2023 B卷 100分)
🏆本文收录于,华为OD机试(JAVA)真题(A卷+B卷)
刷的越多,抽中的概率越大,每一题都有详细的答题思路、详细的代码注释、样例测试,发现新题目,随时更新,全天CSDN在线答疑。