任意長度的高精度大整數加法

2021-07-05 06:28:51 字數 848 閱讀 6269

方法:這裡用了資料結構棧,實際上棧更方便實現高精度加法。

步驟:1、第乙個資料加數按輸入順序(高位到低位)入棧1。此時棧頂為最低位

2、‍第二個資料加數按輸入順序(高位到低位)入棧2。此時棧頂為最低位

3、將棧1、棧2均pop出棧頂做加法,並考慮進製,結果入棧3,這時棧3正好是低位入棧。

4、處理多餘的棧1、棧2。

5、直接pop出棧3,即正好的從高位到低位的結果。

完整的實現**如下:

[cpp]view plain

copy

#include "iostream"

#include "stack"

using

namespace std;  

stacks1;  

stacks2;  

stacks3;  

char c1[100];  

char c2[100];  

int main(void)  

for(int i=0;i  

int tmp=0;  

while(!s1.empty() && !s2.empty())  

while(!s1.empty())   //處理多餘的棧1

while(!s2.empty())   //處理多餘的棧2

if(tmp)        //處理多餘的進製

printf("兩個數相加的結果為:");  

while(!s3.empty())    //直接pop出棧3,即正好的從高位到低位的結果

cout

return 0;  

}  

執行效果圖如下:

任意長度的高精度大整數加法

方法 這裡用了資料結構棧,實際上棧更方便實現高精度加法。步驟 1 第乙個資料加數按輸入順序 高位到低位 入棧1。此時棧頂為最低位 2 第二個資料加數按輸入順序 高位到低位 入棧2。此時棧頂為最低位 3 將棧1 棧2均pop出棧頂做加法,並考慮進製,結果入棧3,這時棧3正好是低位入棧。4 處理多餘的棧...

任意長度的高精度大整數加法

方法 這裡用了資料結構棧,實際上棧更方便實現高精度加法。步驟 1 第乙個資料加數按輸入順序 高位到低位 入棧1。此時棧頂為最低位 2 第二個資料加數按輸入順序 高位到低位 入棧2。此時棧頂為最低位 3 將棧1 棧2均pop出棧頂做加法,並考慮進製,結果入棧3,這時棧3正好是低位入棧。4 處理多餘的棧...

高精度 大整數加法

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