靠譜的車【華為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 = 0surface_reading_str = str(surface_reading)for i in range(len(surface_reading_str)):digit = int(surface_reading_str[i])if digit == 4:# 跳過數字 4continueelif 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!愿你的代碼如同暢快的音符,跳躍在鍵盤上,最后彈奏出一曲高分之歌。加油,你是技術舞臺上的巨星!通過機試,就像是風輕云淡,輕輕松松就把高分收入囊中。祝愿你的編程之旅一路順風,破風前行,每一行代碼都是成功的注腳!🌈💻

在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/712769.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/712769.shtml
英文地址,請注明出處:http://en.pswp.cn/news/712769.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Scaffold 腳手架

Scaffold 腳手架 Scaffold 腳手架組件是一個核心組件&#xff0c;它為開發者提供了一個標準的、可定制的應用界面框架。androidx.compose.material3.Scaffold 包含了應用界面的基礎元素&#xff0c;如狀態欄、導航欄、頂部應用欄&#xff08;TopAppBar&#xff09;等。通過 Sc…

Windows的Docker-Desktop安裝與問題總結

目錄 Docker-Desktop安裝步驟 環境配置 Docker-Desktop安裝問題總結 問題1&#xff1a;docker-desktop setting界面一直加載轉圈 問題2&#xff1a;docker鏡像的存儲位置變更&#xff08;防止C盤空間不足&#xff09; 參考文獻&#xff1a; Docker-Desktop安裝步驟 環境…

又挖到寶了!國人團隊研發的AI視頻工具PixVerse,這么好用居然還完全免費!(強烈推薦)

昨天發了一款國產免費的 AI 繪畫工具 Dreamina 的介紹&#xff1a; 居然才發現&#xff01;字節跳動旗下國產AI繪畫工具Dreamina&#xff0c;這么好用居然還免費&#xff01;&#xff08;強烈推薦&#xff09; 發現大家對國產 AI 工具還挺感興趣的。今天繼續幫大家挖國產的 A…

【Leetcode每日一題】二分查找 - 山脈數組的峰頂索引(難度??)(23)

1. 題目解析 Leetcode鏈接&#xff1a;852. 山脈數組的峰頂索引 這個問題的理解其實相當簡單&#xff0c;只需看一下示例&#xff0c;基本就能明白其含義了。 核心在于找到題目中所說的峰值所在的下標并返回他們的下標即可。 2. 算法原理 峰頂及兩側數據特點分析 峰頂數據…

運算放大電路常用接法

1、反相比例運算電路 2、同相比例運算電路 3、電壓跟隨器 4、反相求和運算電路 5、同相求和運算電路 6、加減運算電路 7、加減電路 8、積分運算電路 9、實用積分電路 10、微分運算電路 11、實用微分電路 12、壓控電壓源二階低通濾波器 13、壓控電壓源二階高通濾波器 14、RC橋式…

[剪藏] - 尊湃通訊公司竊密曝光,發現繞不過華為

在科技領域風起云涌的今天&#xff0c;一場驚心動魄的竊密事件悄然發生&#xff0c;涉及華為WIFI6芯片技術的商業秘密被竊取&#xff0c;案中主謀竟然是一位曾在華為海思擁有重量級地位的技術大佬。本文將深入挖掘這起事件的來龍去脈&#xff0c;探討竊密者的背叛和華為的技術守…

CDGA數據治理工程師模擬試題(文末附鏈接)

單選題&#xff0c;每題僅有一個正確的選項。(本題型共有100道,總計100分) 1、關于元數據管理原則說法正確的是 A.確保員工了解如何訪問和使用元數據。 B.制定、實施和審核元數據標準&#xff0c;以簡化元數據的集成和使用。 C.創建反饋機制&#xff0c;以便數據…

公鑰密碼體制

公鑰密碼體制 一個系統中,n個用戶之間要進行保密通信,為了確保安全性,兩兩用戶之間的密鑰不能一樣。這種方式下,需要系統提供C2 n=n(n-1)/2把共享密鑰。這樣密鑰的數量就大幅增加了,隨之而來的產生、存儲、分配、管理密鑰的成本也大幅增加。而使用公鑰密碼體制可以大大減…

超1000本計算機經典書籍分享(均可免費下載)

今天給大家推薦兩個開源項目&#xff0c;均可百度網盤下載&#xff1a; 1 https://gitee.com/ForthEspada/CS-Books 超過1000本的計算機經典書籍、個人筆記資料以及作者在各平臺發表文章中所涉及的資源等。 書籍資源包括C/C、Java、Python、Go語言、數據結構與算法、操作系統…

深度學習-回顧經典AlexNet網絡:山高我為峰

深度學習-回顧經典AlexNet網絡之山高我為峰 深度學習中&#xff0c;經典網絡引領一波又一波的技術革命&#xff0c;從LetNet到當前最火的GPT所用的Transformer&#xff0c;它們把AI技術不斷推向高潮。2012年AlexNet大放異彩&#xff0c;它把深度學習技術引領第一個高峰&#x…

總結一下linux性能檢測和調優手段

1.perf 是 Linux 系統中性能分析工具&#xff0c;用于收集性能相關的信息。它可以用于查看 CPU 使用情況、內存性能、磁盤 I/O 等&#xff0c;以幫助開發者找到性能瓶頸。 以下是一些 perf 常見用法和示例&#xff1a; 1. CPU Profiling a. 查看 CPU 使用率 perf stat -e cpu…

10分鐘SkyWalking與SpringBoot融合并整合到Linux中

1.依賴配置 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><version>2.2.0.RELEASE</version></dependency><dependency><groupId>org.springframe…

復試PAT乙級day33

PAT乙級1106~1110 1106_2019數列有一個測試點過不了 1109_擅長C 這題不會&#xff0c;通過的是別人的代碼 1110_區塊反轉 這題跟1105_鏈表合并 的處理很像。值得注意的是分段區間翻轉用 大轉小轉 的方式。這題也有一個測試點通不過。

從模型到復合AI系統的轉變

2023年,大型語言模型(LLM)吸引了所有人的注意力,它可以通過提示來執行通用任務,例如翻譯或編碼。這自然導致人們將模型作為AI應用開發的主要成分而密切關注,所有人都在想新的LLM將帶來什么能力。然而,隨著越來越多的開發者開始使用LLM構建,我們認為這種關注正在迅速改變:最先進…

阿里云OSS掛到到ECS作為一個linux目錄(OSSFS掛載)

配置OSS賬號信息并掛載OSS Bucket。以下是該文檔的示例&#xff1a; OSSFS 配置與掛載指南 步驟 1&#xff1a;安裝必要的依賴包 首先&#xff0c;確保您的系統已經安裝了wget和fuse。這些工具是下載OSSFS安裝包和掛載文件系統所必需的。 bash復制代碼 # 檢查并安裝 wget if…

數據服務安全的重要性

數據服務安全在當今信息化社會顯得尤為重要。隨著大數據、云計算、人工智能等技術的飛速發展&#xff0c;數據已經成為企業和組織的核心資產&#xff0c;數據服務安全也面臨著前所未有的挑戰。本文將從數據服務安全的重要性、常見威脅、防護策略以及未來發展趨勢等方面進行探討…

selenuim【1】($x(‘xpath語法’)、WebDriverWait())

文章目錄 初學selenuim記錄1、執行driver webdriver.Chrome()后很久才打開瀏覽器2、瀏覽器多元素定位 $x(‘xpath語法’)3、打開瀏覽器driver.get("網址")執行了很久才開始定位元素&#xff1a;等待&#xff08;1&#xff09;driver.set_page_load_timeout(t)&#…

事務及SpringBoot中的事務開啟

目錄 1.什么是事務&#xff1f; 2.事務的四大特性&#xff1f; 3.SpringBoot中怎樣開啟事務 1.開啟事務支持 2.在需要開啟事務的方法或類上使用Transactional 3.通過配置類來開啟全局事務 1.什么是事務&#xff1f; 事務是指在數據庫管理系統中執行的一系列操作的邏輯單元。事…

基于SpringBoot+vue+elementui在線教育系統詳細設計實現

前言 ??博主介紹:?專注于Java、小程序技術領域和畢業項目實戰??? ???? 精彩專欄 推薦訂閱???? 2024年Java精品實戰案例《100套》 ??文末獲取源碼聯系?? ??文末獲取源碼+數據庫?? 感興趣的可以先收藏起來,還有大家在畢設選題,項目以及論文編寫等相…

外包干了7個月,技術退步明顯.......

先說一下自己的情況&#xff0c;大專生&#xff0c;18年通過校招進入北京某軟件公司&#xff0c;干了接近4年的功能測試&#xff0c;今年年初&#xff0c;感覺自己不能夠在這樣下去了&#xff0c;長時間呆在一個舒適的環境會讓一個人墮落! 而我已經在一個企業干了四年的功能測…