洛谷 P2142 高精度減法(詳解)c++

題目鏈接:P2142 高精度減法 - 洛谷

1.題目??

2.算法原理

解法:模擬列豎式計算的過程

  1. 先用字符串讀入,然后拆分每一位,逆序放進數組中
  2. 利用數組,模擬列豎式減法的過程

在這兩步之前要多加一步,在模擬解法的過程,一定是一個較大的數減去較小的數,如果是較小的數減較大的數,列豎式計算過程會出錯的,如果這道題給的是99-123,此時要把它轉換成123-99,在最終輸出結果之前先輸出一個負號就可以了,所以我們要先處理一個情況,先比較大小,然后用較大的數減去較小的數

有一個問題,題目給的這兩個數是用字符串來存的,如果直接用字符串比較大小肯定出錯,它涉及字典序vs數的大小的問題,此時有兩個數101和99,如果是數的話, 101一定大于99 ,但字符串就不一定了,最終比較結果是99大于101,因為比較字符串的時候是按照字典序來比較的,它的比較方式是我管你這串字符串的長度是多少,直接從最高位開始比較,‘9’這個字符是大于‘1’字符的,所以99字符大于101字符串,這不是我們想要的,處理這種情況,可以在用字符串比較之前,先比較一下長度,長度較長的數一定是大的,如果兩個字符串長度相等,再按照字典序的方式來比較就可以了

?還有如果是997-996,結果等于1,因為前導0是要把它刪掉的,但此時lc的長度等于3,lc原本指向-1,把前導0去掉后,lc應該指向下標2,所以我們可以判斷下lc-1這個位置如果是0,就讓lc- -,當他下一個位置是1的時候,讓他停下就可以;還有一種情況,如果是999-999,最終的結果是000,lc下標2的時候,lc-1的位置還是0,就不能再減了,因為你最低限度這里面是要存一個0的,所以lc- -的時候要判斷一下,lc大于1的時候再去- -,因為lc如果等于1的話,這里即使只剩一個0,lc也不能再減了

代碼:

#include <iostream>
using namespace std;const int N = 1e6 + 10;
int a[N], b[N], c[N];
int la, lb, lc; //分別標記abc數組長度// 高精度加法的模版 - c = a + b;
void add(int c[], int a[], int b[])
{for (int i = 0; i < lc; i++){c[i] += a[i] + b[i]; // 對應位相加,再加上進位 9+4=13c[i + 1] += c[i] / 10; // 處理進位 13/10=1c[i] %= 10; // 處理余數 13%10=3}if (c[lc]) lc++;
}int main()
{string x, y; cin >> x >> y;// 1. 拆分每一位,逆序放在數組中la = x.size(); lb = y.size(); lc = max(la, lb);for (int i = 0; i < la; i++) a[la - 1 - i] = x[i] - '0';for (int i = 0; i < lb; i++) b[lb - 1 - i] = y[i] - '0';// 2. 模擬加法的過程add(c, a, b); // c = a + b// 輸出結果for (int i = lc - 1; i >= 0; i--) cout << c[i];return 0;
}

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

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

相關文章

在 MyBatis 中,若數據庫字段名與 SQL 保留字沖突解決辦法

在 MyBatis 中&#xff0c;若數據庫字段名與 SQL 保留字沖突&#xff0c;可通過以下方法解決&#xff1a; 目錄 一、使用轉義符號包裹字段名二、通過別名映射三、借助 MyBatis-Plus 注解四、全局配置策略&#xff08;輔助方案&#xff09;最佳實踐與注意事項 一、使用轉義符號…

ThreadLocal解析

1. ThreadLocal的定義與核心作用 ThreadLocal是Java中用于實現線程局部變量的工具類。它為每個線程提供獨立的變量副本&#xff0c;使得每個線程訪問的是自己的數據&#xff0c;從而避免多線程環境下的資源共享問題&#xff0c;實現線程隔離。 例如&#xff0c;解決SimpleDate…

Kafka零拷貝

Kafka為什么適用零拷貝&#xff0c;其他存儲結構不適用&#xff1f; Kafka 采用的是日志存儲模型&#xff0c;數據通常是順序寫入、順序讀取&#xff0c;并且它的消費模式是 “讀完即走”&#xff08;一次性讀取并發送給消費者&#xff09;&#xff0c;這與零拷貝的特性完美匹…

微服務組件詳解——sentinel

1.啟動sentinel&#xff1a; 下載jar sentinel-dashboard-1.8.0.jar 使用以下命令直接運行 jar 包&#xff08;JDK 版本必須≥ 1.8&#xff09;&#xff1a; java -Dserver.port9999 -jar D:\sentinel-dashboard-1.8.0.jar 控制臺訪問地址&#xff1a;http://localhost:9999…

AI數據分析:deepseek生成SQL

在當今數據驅動的時代&#xff0c;數據分析已成為企業和個人決策的重要工具。隨著人工智能技術的快速發展&#xff0c;AI 驅動的數據分析工具正在改變我們處理和分析數據的方式。本文將著重介紹如何使用 DeepSeek 進行自動補全SQL 查詢語句。 我們都知道&#xff0c;SQL 查詢語…

動態規劃01背包問題系列一>目標和

目錄 題目分析及優化&#xff1a;狀態表示&#xff1a;狀態轉移方程&#xff1a;初始化&#xff1a;填表順序&#xff1a;返回值&#xff1a;代碼呈現&#xff1a;優化&#xff1a;代碼呈現&#xff1a; 題目分析及優化&#xff1a; 狀態表示&#xff1a; 狀態轉移方程&#xf…

Linux 基礎---sudo權限 修改文件所屬人、用戶所屬組

sudo 概念&#xff1a;讓普通用戶使用管理員權限執行一些操作&#xff08;root&#xff09; 在命令前加上sudo 即可 修改文件所屬人、所屬組

HMC7043和HMC7044芯片配置使用

一,HMC7043芯片 MC7043獨特的特性是對14個通道分別進行獨立靈活的相位管理。所有14個通道均支持頻率和相位調整。這些輸出還可針對50 Ω或100 Ω內部和外部端接選項進行編程。HMC7043器件具有RF SYNC功能,支持確定性同步多個HMC7043器件,即確保所有時鐘輸出從同一時鐘沿開始…

【動手實驗】TCP半連接隊列、全連接隊列實戰分析

本文是對 從一次線上問題說起&#xff0c;詳解 TCP 半連接隊列、全連接隊列 這篇文章的實驗復現和總結&#xff0c;借此加深對 TCP 半連接隊列、全連接隊列的理解。 實驗環境 兩臺騰訊云服務器 node2&#xff08;172.19.0.12&#xff09; 和 node3&#xff08;172.19.0.15&am…

Springboot整合WebSocket+Redis以及微信小程序如何調用

一、 Springboot整合WebSocket 1. 引入socket依賴 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-websocket</artifactId> </dependency>引入依賴后需要刷新maven,Websocket的版本默認跟隨S…

影刀RPA開發拓展--SQL常用語句全攻略

前言 SQL&#xff08;結構化查詢語言&#xff09;是數據庫管理和操作的核心工具&#xff0c;無論是初學者還是經驗豐富的數據庫管理員&#xff0c;掌握常用的 SQL 語句對于高效管理和查詢數據都至關重要。本文將系統性地介紹最常用的 SQL 語句&#xff0c;并為每個語句提供詳細…

大模型訓練微調技術介紹

大模型訓練微調技術是人工智能領域中的一項重要技術&#xff0c;旨在通過少量特定領域的數據對預訓練模型進行進一步訓練&#xff0c;使其更好地適應具體任務或應用場景。以下是關于大模型訓練微調技術的詳細介紹&#xff1a; 1. 微調技術的定義與意義 微調&#xff08;Fine-…

生態安全相關

概念&#xff1a;生態安全指一個國家具有支撐國家生存發展的較為完整、不受威脅的生態系統&#xff0c;以及應對內外重大生態問題的能力。 &#xff08;1&#xff09;國外生態安全的研究進展 國際上對生態安全的研究是從“環境”與“安全”之間的關系展開的。開始的階段&#x…

2024年第十五屆藍橋杯大賽軟件賽省賽Python大學A組真題解析《更新中》

文章目錄 試題A: 拼正方形(本題總分:5 分)解析答案試題B: 召喚數學精靈(本題總分:5 分)解析答案試題C: 數字詩意解析答案試題D:回文數組試題A: 拼正方形(本題總分:5 分) 【問題描述】 小藍正在玩拼圖游戲,他有7385137888721 個2 2 的方塊和10470245 個1 1 的方塊,他需…

《張一鳴,創業心路與算法思維》

張一鳴&#xff0c;多年如一日的閱讀習慣。 愛讀人物傳記&#xff0c;稱教科書式人類知識最濃縮的書&#xff0c;也愛看心理學&#xff0c;創業以及商業管理類的書。 馮侖&#xff0c;王石&#xff0c;聯想&#xff0c;杰克韋爾奇&#xff0c;思科。 《喬布斯傳》《埃隆馬斯…

策略模式處理

首先&#xff0c;定義接口或抽象父類。例如&#xff0c;定義一個Strategy接口&#xff0c;里面有execute方法。然后不同的策略類實現這個接口&#xff0c;比如ConcreteStrategyA、ConcreteStrategyB等&#xff0c;每個類用Component注解&#xff0c;可能指定Bean的名字&#xf…

go程序中使用pprof增加程序監控功能

1.什么是 pprof&#xff1f; pprof 是 Go 內置的性能分析工具&#xff0c;用于生成程序運行時的性能分析數據。它可以幫助開發者分析&#xff1a; CPU 使用情況 內存分配情況 Goroutine 狀況 系統調用分析等 2. 如何使用 pprof&#xff1f; 要使用 pprof&#xff0c;首先需要在…

javaweb自用筆記:Vue

Vue 什么是vue vue案例 1、引入vue.js文件 2、定義vue對象 3、定義vue接管的區域el 4、定義數據模型data 5、定義視圖div 6、通過標簽v-model來綁定數據模型 7、{{message}}直接將數據模型message展示出來 8、由于vue的雙向數據綁定&#xff0c;當視圖層標簽input里的…

376_C++_云透傳,板端負責處理透傳數據的API函數,用于實現客戶端對設備內部接口的訪問(VMS把數據直接傳給板端內部)

RsApi_PassThrough 云透傳,板端負責處理透傳數據的API函數,用于實現客戶端對設備內部接口的訪問(VMS把數據直接傳給板端內部) 我來分析一下 RsApi_PassThrough 函數的作用和實現邏輯: 1. 功能概述 RsApi_PassThrough 是一個透傳接口,用于處理 /API/Http/PassThrough 的…

基于eRDMA實測DeepSeek開源的3FS

DeepSeek昨天開源了3FS分布式文件系統, 通過180個存儲節點提供了 6.6TiB/s的存儲性能, 全面支持大模型的訓練和推理的KVCache轉存以及向量數據庫等能力, 每個客戶端節點支持40GB/s峰值吞吐用于KVCache查找. 發布后, 我們在阿里云ECS上進行了快速的復現, 并進行了性能測試, ECS…