靠谱的车【华为OD机试-JAVAPythonC++JS】

题目描述

程序员小明打了一辆出租车去上班。出于职业敏感,他注意到这辆出租车的计费表有点问题,总是偏大。
出租车司机解释说他不喜欢数字4,所以改装了计费表,任何数字位置遇到数字4就直接跳过,其余功能都正常。
比如:
23再多一块钱就变为25;
39再多一块钱变为50;
399再多一块钱变为500;
小明识破了司机的伎俩,准备利用自己的学识打败司机的阴谋。
给出计费表的表面读数,返回实际产生的费用。
输入描述:
只有一行,数字N,表示里程表的读数。
(1<=N<=888888888)。
输出描述:
一个数字,表示实际产生的费用。以回车结束。
补充说明:
示例1
输入:
5
输出:
4
说明:
5表示计费表的表面读数。
4表示实际产生的费用其实只有4块钱。
示例2
输入:
17
输出:
15
说明:
17表示计费表的表面读数。
15表示实际产生的费用其实只有15块钱。
示例3
输入:
100
输出:
81
说明:
100表示计费表的表面读数。
81表示实际产生的费用其实只有81块钱。

解题思路

  1. 将表面读数转换为字符串,以便按位处理数字。
  2. 遍历每一位数字,从高位到低位。
  3. 对于每一位数字,如果是4,则直接跳过;如果大于4,则减一。
  4. 计算当前位数对应的实际费用,乘以权重(9的幂次方,从高位到低位递减),并累加到总费用中。
  5. 返回实际产生的费用。

这样,通过遍历每一位数字,对数字进行适当的处理,就可以得到实际产生的费用。

题解代码

Python题解代码

def calculate_actual_cost(surface_reading):
    actual_cost = 0
    surface_reading_str = str(surface_reading)

    for i in range(len(surface_reading_str)):
        digit = int(surface_reading_str[i])

        if digit == 4:
            # 跳过数字 4
            continue
        elif digit > 4:
            # 对大于 4 的数字减一
            digit -= 1

        # 计算当前位数对应的实际费用,并累加到总费用中
        actual_cost += digit * (9 ** (len(surface_reading_str) - i - 1))

    return actual_cost


# 输入获取
surface_reading = int(input())

# 计算实际产生的费用并输出结果
print(calculate_actual_cost(surface_reading))



JAVA题解代码

import java.util.Scanner;
public class ReliableCar {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		while (sc.hasNext()) {
			String line = sc.nextLine();
			processReliableCar( line );
		}
	}
 
	private static void processReliableCar( String line ) {
		StringBuffer sb = new StringBuffer();
		for( int i = 0; i < line.length(); i ++ )
		{
			char curChar = line.charAt( i );
			if( curChar > '4' )
			{
				sb.append( (char) ( curChar - 1 ) );
			}else
			{
				sb.append( curChar );
			}
		}
		String realValueStr = sb.toString();
		int realValue = 0;
		for( int i = 0; i < realValueStr.length(); i ++ )
		{
			realValue *= 9;
			realValue += ( realValueStr.charAt(i) - '0') ;
		}
		System.out.println( realValue );		
	}
		
}

C/C++题解代码

#include<iostream>
using namespace std;
 
int result(int val) {
	int m = val;
	int tmp = 0, j = 0, i = 1;
	while (val > 0) {
		if (val % 10 > 4) {
			tmp += ((val % 10) - 1) * j + i;
		}
		else {
			tmp += (val % 10) * j;
		}
		val /= 10;
		j = j * 9 + i;
		i *= 10;
	}
	return m - tmp;
}
 
int main() {
	int val;
	cin >> val;
	cout << result(val) << endl;
	return 0;
}

JS题解代码


const rl = require("readline").createInterface({ input: process.stdin });
var iter = rl[Symbol.asyncIterator]();
const readline = async () => (await iter.next()).value;
void async function() {
    while (line = await readline()) {
        processRobotMoveArea(line);
    }
 
}();
 
function processRobotMoveArea(line) {
    var realValueStr = "";
        for( var i = 0; i < line.length; i ++ )
        {
            var curChar = line[i];
            if( curChar > '4' )
            {
                realValueStr += curChar - 1;
            }else
            {
                realValueStr += curChar;
            }
        }
        var realValue = 0;
        for( var i = 0; i < realValueStr.length; i ++ )
        {
            realValue *= 9;
            realValue += ( realValueStr[i] - '0') ;
        }
    console.log(realValue);
}

代码OJ评判结果

通过测试点

代码讲解

Python题解代码解析:

  1. 函数定义:

    • calculate_actual_cost(surface_reading): 定义了一个计算实际费用的函数,接收表面读数 surface_reading 作为参数。
  2. 变量初始化:

    • actual_cost = 0: 初始化实际费用为0。
    • surface_reading_str = str(surface_reading): 将表面读数转换为字符串,以便按位处理数字。
  3. 循环遍历每一位数字:

    • for i in range(len(surface_reading_str)): 遍历表面读数的每一位数字,从高位到低位。
    • digit = int(surface_reading_str[i]): 获取当前位的数字。
  4. 处理数字4的情况:

    • if digit == 4: continue: 如果当前位数字是4,则直接跳过。
  5. 处理大于4的数字:

    • elif digit > 4: digit -= 1: 如果当前位数字大于4,则减一。
  6. 计算实际费用:

    • actual_cost += digit * (9 ** (len(surface_reading_str) - i - 1)): 计算当前位数对应的实际费用,并累加到总费用中。
  7. 返回结果:

    • return actual_cost: 返回实际产生的费用。
  8. 输入获取和结果输出:

    • surface_reading = int(input()): 获取输入的表面读数。
    • print(calculate_actual_cost(surface_reading)): 计算实际产生的费用并输出结果。

JAVA题解代码解析:

  1. 导入包和主函数:

    • import java.util.Scanner;: 导入Scanner类。
    • public class ReliableCar {: 定义类名为ReliableCar。
  2. 主函数处理输入:

    • Scanner sc = new Scanner(System.in);: 创建Scanner对象用于接收输入。
    • while (sc.hasNext()) {: 循环读取输入。
    • String line = sc.nextLine();: 读取一行输入。
  3. 处理每个字符:

    • for( int i = 0; i < line.length(); i ++ ): 遍历输入的每个字符。
    • char curChar = line.charAt( i );: 获取当前字符。
    • if( curChar > '4' ) { sb.append( (char) ( curChar - 1 ) ); }: 如果当前字符大于4,则将字符减一后追加到结果字符串中。
    • else { sb.append( curChar ); }: 否则直接追加当前字符。
  4. 计算实际费用:

    • String realValueStr = sb.toString();: 将结果字符串转换为字符串。
    • int realValue = 0;: 初始化实际费用为0。
    • for( int i = 0; i < realValueStr.length(); i ++ ): 遍历每个字符。
    • realValue *= 9; realValue += ( realValueStr.charAt(i) - '0') ;: 计算实际费用。
  5. 输出结果:

    • System.out.println( realValue );: 输出实际费用。

C/C++题解代码解析:

  1. 包含头文件和主函数:

    • #include<iostream>: 包含输入输出流头文件。
    • int result(int val) {: 定义计算实际费用的函数。
  2. 函数实现:

    • int tmp = 0, j = 0, i = 1;: 初始化临时变量和权重变量。
    • while (val > 0) {: 循环处理每个数字。
    • if (val % 10 > 4) { tmp += ((val % 10) - 1) * j + i; }: 如果当前数字大于4,则将数字减一后加到临时变量中。
    • else { tmp += (val % 10) * j; }: 否则直接加到临时变量中。
    • val /= 10; j = j * 9 + i; i *= 10;: 更新数字和权重。
    • return m - tmp;: 返回实际费用。
  3. 主函数:

    • int main() { int val; cin >> val; cout << result(val) << endl; return 0; }: 读取输入,调用函数计算实际费用,输出结果。

JS题解代码解析:

  1. 导入readline模块:

    • const rl = require("readline").createInterface({ input: process.stdin });: 使用readline模块创建接口。
  2. 异步循环处理输入:

    • void async function() { while (line = await readline()) { processRobotMoveArea(line); } }();: 异步循环读取输入,并调用处理函数。
  3. 处理每个字符:

    • for( var i = 0; i < line.length; i ++ ): 遍历输入的每个字符。
    • var curChar = line[i];: 获取当前字符。
    • if( curChar > '4' ) { realValueStr += curChar - 1; }: 如果当前字符大于4,则将字符减一后追加到结果字符串中。
    • else { realValueStr += curChar; }: 否则直接追加当前字符。
  4. 计算实际费用:

    • var realValue = 0;: 初始化实际费用为0。
    • for( var i = 0; i < realValueStr.length; i ++ ): 遍历每个字符。
    • realValue *= 9; realValue += ( realValueStr[i] - '0') ;: 计算实际费用。
  5. 输出结果:

    • console.log(realValue);: 输出实际费用。

寄语

🚀✨ 朋友,希望你的华为OD机试就像是一场轻松的技术party!愿你的代码如同畅快的音符,跳跃在键盘上,最后弹奏出一曲高分之歌。加油,你是技术舞台上的巨星!通过机试,就像是风轻云淡,轻轻松松就把高分收入囊中。祝愿你的编程之旅一路顺风,破风前行,每一行代码都是成功的注脚!🌈💻

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/420397.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

外汇天眼:ASIC 获得针对前 Blockchain Global 董事的临时出行限制令

澳大利亚证券与投资委员会&#xff08;ASIC&#xff09;已经针对前Blockchain Global Limited&#xff08;清算中&#xff09;董事梁国&#xff08;又名Allan Guo&#xff09;获得了临时旅行限制令。这些命令在其他方面&#xff0c;阻止郭先生在2024年8月20日或进一步命令之前离…

C++数据结构与算法——二叉搜索树的属性

C第二阶段——数据结构和算法&#xff0c;之前学过一点点数据结构&#xff0c;当时是基于Python来学习的&#xff0c;现在基于C查漏补缺&#xff0c;尤其是树的部分。这一部分计划一个月&#xff0c;主要利用代码随想录来学习&#xff0c;刷题使用力扣网站&#xff0c;不定时更…

C++数据结构与算法——二叉树的属性

C第二阶段——数据结构和算法&#xff0c;之前学过一点点数据结构&#xff0c;当时是基于Python来学习的&#xff0c;现在基于C查漏补缺&#xff0c;尤其是树的部分。这一部分计划一个月&#xff0c;主要利用代码随想录来学习&#xff0c;刷题使用力扣网站&#xff0c;不定时更…

机器学习项目外包注意事项

将机器学习项目外包给外部团队或合作伙伴是一种常见的做法&#xff0c;特别是当您的团队缺乏特定领域的专业知识或资源时。以下是一些关于机器学习项目外包的要点和注意事项&#xff0c;希望对大家有所帮助。北京木奇移动技术有限公司&#xff0c;专业的软件外包开发公司&#…

【Unity】使用Unity实现双屏显示

引言 在使用Unity的时候&#xff0c;有时候会需要使用双屏显示 简单来说就是需要在两个显示器中显示游戏画面 双屏显示注意点&#xff1a; ①双屏显示需要电脑有两个显示 ②双屏显示只能用于PC端 ③不仅仅可以双屏&#xff0c;Unity最大支持8屏显示 1.相机设置 ①我们打开Un…

[VNCTF2024]-PWN:preinit解析(逆向花指令,绕过strcmp,函数修改,机器码)

查看保护&#xff1a; 查看ida&#xff1a; 这边其实看反汇编没啥大作用&#xff0c;需要自己动调。 但是前面的绕过strcmp还是要看一下的。 解题&#xff1a; 这里是用linux自带的产生随机数的文件urandom来产生一个随机密码&#xff0c;然后让我们输入密码&#xff0c;用st…

【论文笔记】An Effective Adversarial Attack on Person Re-Identification ...

原文标题&#xff08;文章标题处有字数限制&#xff09;&#xff1a; 《An Effective Adversarial Attack on Person Re-Identification in Video Surveillance via Dispersion Reduction》 Abstract 通过减少神经网络内部特征图的分散性攻击reid模型。 erbloo/Dispersion_r…

【C语言】常见的动态内存管理错误

前言 上一篇介绍了C语言中 动态内存管理函数&#xff0c;本片讲解的是 在我们使用动态内存管理时 常见的错误&#xff0c;一起来看看吧~ 欢迎关注个人主页&#xff1a;逸狼 创造不易&#xff0c;可以点点赞吗~ 如有错误&#xff0c;欢迎指出~ 目录 1.对NULL指针的解引⽤操作 错…

深入解析Golang的encoding/ascii85库:从基础到实战

深入解析Golang的encoding/ascii85库&#xff1a;从基础到实战 引言基础知识什么是ASCII85编码&#xff1f;ASCII85编码的工作原理ASCII85编码的优点ASCII85编码的缺点 使用Golang的encoding/ascii85库引入encoding/ascii85包ASCII85编码ASCII85解码实战示例小结 进阶技巧和最佳…

Vue3(pinia) 整合 SpringWebsocket链接url动态传参

前言&#xff1a; &#x1f44f;作者简介&#xff1a;我是笑霸final&#xff0c;一名热爱技术的在校学生。 &#x1f4dd;个人主页&#xff1a;个人主页1 || 笑霸final的主页2 &#x1f4d5;系列专栏&#xff1a;java专栏 &#x1f4e7;如果文章知识点有错误的地方&#xff0c;…

轧辊品质检测 直线度测量仪满足多种数据监测!

轧辊有带钢轧辊、型钢轧辊、线材轧辊、开坯辊、粗轧辊、精轧辊、破鳞辊、穿孔辊、平整辊、钢轧辊、铸铁轧辊、硬质合金轧辊、陶瓷轧辊等&#xff0c;但不管哪种类型的轧辊&#xff0c;对直线度测量都可以通过直线度测量仪来实现&#xff0c;这种测量仪检测方便&#xff0c;数据…

现货黄金贵金属投资难不难做?

现货黄金投资的难度因人而异&#xff0c;它涉及市场知识、分析能力、资金管理和心理素质等多个方面&#xff0c;因此不能一概而论。但是&#xff0c;如果投资者能够系统地学习相关知识&#xff0c;并在实践中不断积累经验&#xff0c;那么现货黄金投资并非难以驾驭。 先了解现货…

《汇编语言》- 读书笔记 - 第13章-int 指令

《汇编语言》- 读书笔记 - 第13章-int 指令 13.1 int 指令13.2 编写供应用程序调用的中断例程中断例程&#xff1a;求一 word 型数据的平方主程序中断处理程序执行效果 中断例程&#xff1a;将一个全是字母&#xff0c;以0结尾的字符串&#xff0c;转化为大写主程序中断处理程序…

作业1-224——P1927 防护伞

思路 遍历一下找到两点间的最远距离&#xff0c;直接公式算结果&#xff0c;控制输出位数 参考代码 #include<iostream> #include<iomanip> #include<cmath> using namespace std; int main() { int n; cin>>n; int x[n],y[n]; do…

hive报错:FAILED: NullPointerException null

发现问题 起因是我虚拟机的hive不管执行什么命令都报空指针异常的错误 我也在网上找了很多相关问题的资料&#xff0c;发现都不是我这个问题的解决方法&#xff0c;后来在hive官网上与hive 3.1.3版本相匹配的hadoop版本是3.x的版本&#xff0c;而我的hadoop版本还是2.7.2的版本…

5G 网络建设【华为OD机试-JAVAPythonC++JS】

题目描述 现需要在某城市进行5G网络建设&#xff0c;已经选取N个地点设置5G基站&#xff0c;编号固定为1到N&#xff0c;接下来需要各个基站之间使用光纤进行连接以确保基站能互联互通&#xff0c;不同基站之间架设光纤的成本各不相同&#xff0c;且有些节点之间已经存在光纤相…

WIN10 无密码自动登录

1、家里重装了一下WIN10系统&#xff0c;第一次登陆居然用了微软网站账号&#xff0c;结果密码忘记了&#xff0c;后面只能用PIN码登陆系统。 2、需要登录微软的网站修改密码&#xff1a; Microsoft account | Sign In or Create Your Account Today – Microsoft 3、在运行…

赵本山与高秀敏夫妇本想找范伟要那1200元电视机垫款,却不好意思向范伟开口--小品《面子》(中1)的台词

赵本山与高秀敏夫妇本想找范伟要那1200元电视机垫款&#xff0c;却不好意思向范伟开口 --小品《面子》&#xff08;中1&#xff09;的台词 表演者&#xff1a;赵本山 高秀敏 范伟 &#xff08;接上&#xff09; 高秀敏&#xff1a;咱俩抓紧提事啊 赵本山&#xff1a;不着急…

div在vue的组件之中如何设置这个字体的颜色和样式大小

在Vue组件中设置<div>的字体颜色和样式大小可以通过两种主要方式实现&#xff1a;通过内联样式&#xff08;inline styles&#xff09;或者通过CSS类&#xff08;CSS classes&#xff09;。 使用内联样式 在Vue模板中直接在元素上使用style属性来设置样式。这种方法适用…

上云还是下云,最大挑战是什么?| 对话章文嵩、毕玄、王小瑞

近半年来&#xff0c;公有云领域频频发生阿里云、滴滴等平台崩溃事件&#xff0c;与此同时&#xff0c;马斯克的“X 下云省钱”言论引起了广泛关注&#xff0c;一时间&#xff0c;“上云”和“下云”成为热议话题。在最近举办的 AutoMQ 云原生创新论坛上&#xff0c;AutoMQ 联合…