高精度 大整數加法

2022-07-10 21:45:18 字數 1007 閱讀 9115

求兩個不超過200位的非負整數的和。

有兩行,每行是乙個不超過200位的非負整數,可能有多餘的前導0。

一行,即相加後的結果。結果裡不能有多餘的前導0,即如果結果是342,那麼就不能輸出為0342。

22222222222222222222

33333333333333333333

本題考察的是高精度計算中的加法計算。

對於超出資料型別範圍的資料,我們首先需要解決的就是輸入、儲存的問題。int與long long型別是儲存不來200位這麼龐大的資料的。我們採用字串的方式來解決輸入、儲存的問題。

之後再來考慮如何進行資料的計算。這個過程我們則採用模擬豎式計算的過程來進行處理。將他們個位對個位,十位對十位,再從個位開始依次相加,過程中逢十進一。

那麼在過程中需要注意相加的時候是低位對齊的,我們可以使字串倒序以便容易實現低位對齊的效果。計算時也是整數和整數進行計算,我們可以再將其轉換成整數型別。字元數字轉整數數字的話,減去字元零即可。

最後輸出答案時,在將其倒轉過來即可正常輸出答案。

#include #include using namespace std;

/*1. 輸入、儲存 大整數

2. 計算 模擬豎式計算

低位對齊 倒序處理 轉換

*/int main(),s2[205]=;

int n1[205]=,n2[205]=;

cin>>s1>>s2;

//倒序

int l1=strlen(s1);

int l2=strlen(s2);

for(int i=0;i=0;i--){

if(n1[i]!=0||i==0) flag=1;

if(flag==1)

cout鏈結

原始碼上傳至gitee倉庫中,歡迎star!

fork me on gitee

大整數加法 高精度訓練 C

求兩個不超過200位的非負整數的和。輸入有兩行,每行是乙個不超過200位的非負整數,可能有多餘的前導0。輸出一行,即相加後的結果。結果裡不能有多餘的前導0,即如果結果是342,那麼就不能輸出為0342。樣例輸入 22222222222222222222 33333333333333333333 樣例...

高精度整數加法 OJ

在計算機中,由於處理器位寬限制,只能處理有限精度的十進位制整數加減法,比如在32位寬處理器計算機中,參與運算的運算元和結果必須在 231 231 1之間。如果需要進行更大範圍的十進位制整數加法,需要使用特殊 的方式實現,比如使用字串儲存運算元和結果,採取逐位運算的方式。如下 9876543210 1...

高精度正整數加法

使用的是模擬手算的方法 例如 123456 123412 3456 123 4 12 4690 我們手算時都是從最右邊開始豎著的那位相加的,依次向左重複豎著相加 s1長度長,s2短 這裡使用引用引數 是為了不要再生成s1,s2字串 void add string s1,string s2 if cn...