Peter算法小課堂—高精度加法

指針與數組

看看以下代碼,請預測答案

#include <bits/stdc++.h>
using namespace std;
int x[10]={0,1,2,3,4,5,6,7,8,9};
int main(){cout<<x<<endl;cout<<x+3<<endl;cout<<*x<<endl;cout<<*(x+7)<<endl;cout<<(x+4)[1]<<endl;return 0;
}

解答:

1.x為x[]數組第一個元素的地址

2.x+3為x[]數組第四個元素的地址

3.*x為數組第一個元素

4.*(x+7)為數組第8個元素

5.(x+4)[1]為第5個元素后面一個元素?

x+y問題

函數總覽:

1.converts() 字符串轉為高精度大數

2.add() 將兩個高精度大數相加(類似豎式)

3.print() 輸出一個高精度大數(刪除前導0)

4.main()主函數 調用函數

main()

輸入兩個字符串,用converts轉化為x[]與y[],再用add模擬豎式將兩數相加,print輸出

代碼:

string s1,s2;
cin>>s1>>s2;
converts(x,s1);
converts(y,s2);
add(x,y);
print(x);

相信大家應該看得懂吧

converts()

先給代碼

void converts(int *a,string s){int i,len=s.size();for(i=0;i<len;i++) a[i]=s[len-i-1]-'0';for(;i<SIZE;i++) a[i]=0;
}

注意事項:

1.i定義在循環外,不能for(int i=0;i<len;i++)

2.len-i-1不能忘記減1

3.字符轉整數要-'0'

*第四行代碼有的童鞋看不懂,我解釋下哈,這里因為i定義過了,省略int i=這一部分

add()

發現別的大佬都寫了好長一段代碼,我只需要7行代碼解決add()

上代碼,

void add(int *a,int *b,int len=SIZE){for(int i=0;i<len;i++)if((a[i]+=b[i])>=10){a[i+1]++;a[i]-=10;}
}

思路:遍歷每一位,將兩個數相加,若大于10,則進位

*攪得有的小彭友看不懂第3行,我來解釋下,這里是先a[i]+=b[i],再把結果與10比較

print()

易錯點就刪除前導0吧,其他沒什么了……

void print(int *a){int i;for(i=SIZE-1;i>0;i--) if(a[i]>0) break;for(;i>=0;i--) cout<<a[i];cout<<endl;
}

大家想看一個小視頻嗎,👇

[C++] 高精加法😎🕵??♂?算法詳解?_嗶哩嗶哩_bilibili

x+y+z問題

#include <bits/stdc++.h>
using namespace std;
#define SIZE 550
int x[SIZE],y[SIZE],z[SIZE];
void converts(int *a,string s){int i,len=s.size();for(i=0;i<len;i++) a[i]=s[len-i-1]-'0';for(;i<SIZE;i++) a[i]=0;
}
void add(int *a,int *b,int len=SIZE){for(int i=0;i<len;i++)if((a[i]+=b[i])>=10){a[i+1]++;a[i]-=10;}
}
void print(int *a){int i;for(i=SIZE-1;i>0;i--) if(a[i]>0) break;for(;i>=0;i--) cout<<a[i];cout<<endl;
}
int main(){freopen("plus.in","r",stdin);freopen("plus.out","w",stdout);string s1,s2,s3;cin>>s1>>s2>>s3;converts(x,s1);converts(y,s2);converts(z,s3);add(x,y);add(x,z);print(x);return 0;
}

希望這些對大家有用,三連必回

https://blog.csdn.net/qq_51184727/article/details/129971145 ←看得見嗎

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

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

相關文章

定制手機套餐---python序列

if __name__ __main__:print("定制手機套餐")print("")#定義電話時長&#xff1a;字典callTimeOptions{1:0分鐘,2:50分鐘,3:100分鐘,4:300分鐘,5:不限量}keyinput("請輸入電話時長的選擇編號&#xff1a;")valuecallTimeOptions.get(key)if val…

代碼隨想錄算法訓練營第五十四天|392.判斷子序列 115.不同的子序列

文檔講解&#xff1a;代碼隨想錄 視頻講解&#xff1a;代碼隨想錄B站賬號 狀態&#xff1a;看了視頻題解和文章解析后做出來了 392.判斷子序列 class Solution:def isSubsequence(self, s: str, t: str) -> bool:dp [[0] * (len(t)1) for _ in range(len(s)1)]for i in ra…

Java 關于批量插入遇到的問題 -sqlserver

序言&#xff1a; 我們在做項目的時候&#xff0c;經常會遇到&#xff0c;對數據的新增動作&#xff0c;如果數據量很少的情況下&#xff0c;單個新增對性能還好&#xff0c;但是一旦涉及到 大數據量&#xff0c;如十萬&#xff0c;百萬&#xff0c;千萬&#xff0c;這個時候如…

RabbitMq使用與整合

MQ基本概念 MQ概述 MQ全稱 Message Queue&#xff08;[kju?]&#xff09;&#xff08;消息隊列&#xff09;&#xff0c;是在消息的傳輸過程中保存消息的容器。多用于分布式系統之間進行通信。 &#xff08;隊列是一種容器&#xff0c;用于存放數據的都是容器&#xff0c;存…

優秀的時間追蹤軟件Timemator for Mac輕松管理時間!

在現代社會&#xff0c;時間管理成為了我們工作和生活中的一大挑戰。如果你經常感到時間不夠用&#xff0c;無法高效地完成任務&#xff0c;那么Timemator for Mac將成為你的得力助手。 Timemator for Mac是一款出色的時間追蹤軟件&#xff0c;它可以幫助你精確記錄和管理你的…

Linux的基本指令 ( 一 )

目錄 前言 Linux基本指令 快速認識五個指令 ls指令 補充內容 pwd指令 補充內容 cd指令 補充內容 重新認識指令 指令的本質 which指令 alias指令 最后 一個文件的三種時間 tree指令及安裝 tree指令 前言 關于Linux操作系統的桌面&#xff0c;在學校教學中我們…

實用高效 無人機光伏巡檢系統助力電站可持續發展

近年來&#xff0c;我國光伏發電行業規模日益壯大&#xff0c;全球領先地位愈發鞏固。為解決光伏電站運維中的難題&#xff0c;浙江某光伏電站與復亞智能達成戰略合作&#xff0c;共同推出全自動無人機光伏巡檢系統&#xff0c;旨在提高發電效率、降低運維成本&#xff0c;最大…

Spark---SparkCore(一)

一、術語與寬窄依賴 1、術語解釋 1、Master(standalone):資源管理的主節點&#xff08;進程&#xff09; 2、Cluster Manager:在集群上獲取資源的外部服務(例如&#xff1a;standalone,Mesos,Yarn) 3、Worker Node(standalone):資源管理的從節點(進程)或者說管理本機資源的…

用Python寫一個瀏覽器集群框架

更多Python學習內容&#xff1a;ipengtao.com 在分布式爬蟲和大規模數據采集的場景中&#xff0c;使用瀏覽器集群是一種有效的方式&#xff0c;可以提高數據采集的速度和效率。本文將介紹如何用Python編寫一個簡單但強大的瀏覽器集群框架&#xff0c;以應對需要使用多個瀏覽器實…

WebGL/threeJS面試題掃描與總結

什么是 WebGL&#xff1f;什么是 Three.js&#xff1f;請解釋three.js中的WebGL和Canvas的區別&#xff1f; WebGL(全寫Web Graphics Library)是一種3D繪圖協議&#xff0c;這種繪圖技術標準允許把JavaScript和OpenGL ES 2.0結合在一起&#xff0c;通過增加OpenGL ES 2.0的一個…

分庫分表、分布式數據庫、MPP

分庫分表、分布式數據庫、MPP的區別嗎&#xff1f; 一、MySQL分庫分表和MySQL分布式集群在性能方面各有優劣&#xff0c;具體取決于應用場景和需求。 MySQL分庫分表&#xff1a; 在分庫分表的場景下&#xff0c;可以將負載分散到多個數據庫實例上&#xff0c;從而提高整體性能…

【模糊測試】課堂筆記

模糊測試 模糊測試過程通常是自動化的。這個過程經典地分為以下幾個階段。 準備&#xff1a;這是第一階段&#xff0c;重點是 SUT 輸入和輸出格式的識別和規范。基于此&#xff0c;規范可以減少生成初始無效模糊數據的可能性并創建有效且精確的輸入。Fuzz Data Generation&am…

思科模擬器操作命令

模式 思科模擬器常見的模式有 用戶模式 能夠操作的命令比較少 特權模式特權模式下面可以操作的比較多 全局模式 接口模式 用戶模式進入特權模式: 命令enable 特權模式進行全局模式命令: configure terminal 退出命令 exit命令&#xff1a;返回上一層&#xff0c;即一步一步…

RocketMQ 消息中間件 知識點匯總

目錄 RocketMQ1、什么是RocketMQ?常用術語:2、為什么需要消息隊列3、什么是異步處理4、什么是服務解耦5、什么是流量控制6、消息隊列兩種模型隊列模型:發布/訂閱模型:總結:7、怎么保證消息不丟失8、如何處理消息被重復消費**出現消息重復的情況:****解決方法:**9、如何保…

流量分析-PhishingEmail_WriteUp

一、題目問題 問題1&#xff1a;黑客的email名稱 問題2&#xff1a;黑客向幾人發送了釣魚郵件 問題3&#xff1a;黑客傳輸的木馬文件名 問題4&#xff1a;下載并運行了木馬文件的人的email名稱和ip地址&#xff0c;用“-”連接 問題5&#xff1a;黑客用于反彈shell的主機i…

什么葡萄酒會適用這種雙重潷析方法呢?

潷析有兩個主要目的&#xff0c;一種是去除陳年或未經過濾的葡萄酒中的沉淀物。雖然沉淀物不會對你造成任何傷害&#xff0c;但當喝葡萄酒滿嘴都是葡萄沉淀物時是一件很糟糕的事。其次&#xff0c;傾析葡萄酒是可以讓葡萄酒“呼吸”與氧氣接觸的&#xff0c;氧氣可以軟化單寧&a…

二維數值型數組例題

1、單位矩陣初始化 題目描述 對用作單位矩陣的數組初始化。單位矩陣在主對角線上的值為1&#xff0c;而其他的地方的值為0&#xff0c;并且主對角線上的行、列下標是一樣的。 輸入要求 輸入一個整數n表示矩陣的行數 輸出要求 輸出n*n的單位矩陣。數據之間以空格間隔&…

LeetCode Hot100 102.二叉樹的層序遍歷

題目&#xff1a; 給你二叉樹的根節點 root &#xff0c;返回其節點值的 層序遍歷 。 &#xff08;即逐層地&#xff0c;從左到右訪問所有節點&#xff09;。 方法&#xff1a;迭代 class Solution {public List<List<Integer>> levelOrder(TreeNode root) {if …

C語言——輸入一個4位正整數,輸出其逆數。

#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h> int main() {int i,j 0;int a1,a2,a3,a4;printf("輸入一個4位正整數&#xff1a;\n");scanf("%d",&i);a1 i/1000; a2 i/100%10; a3 i/10%10; a4 i%10; printf("千位a1%d,百位a…

【JavaFx】利用JavaFx寫一個登錄頁面

以下是一個基本的JavaFX登錄頁面示例: import javafx.application.Application; import javafx.geometry.Insets; import javafx.geometry.Pos; import javafx.scene.Scene; import javafx.scene.control.Button; import javafx.scene.control.Label; import javafx.scene.co…