大數加法計算

2021-10-02 07:39:01 字數 1281 閱讀 8890

輸入兩個整數a和b,輸出這兩個整數的和。a和b都不超過100位。

演算法描述

由於a和b都比較大,所以不能直接使用語言中的標準資料型別來儲存。對於這種問題,一般使用陣列來處理。

定義乙個陣列a,a[0]用於儲存a的個位,a[1]用於儲存a的十位,依此類推。同樣可以用乙個陣列b來儲存b。

計算c = a + b的時候,首先將a[0]與b[0]相加,如果有進製產生,則把進製(即和的十位數)存入r,把和的個位數存入c[0],即c[0]等於(a[0]+b[0])%10。然後計算a[1]與b[1]相加,這時還應將低位進上來的值r也加起來,即c[1]應該是a[1]、b[1]和r三個數的和.如果又有進製產生,則仍可將新的進製存入到r中,和的個位存到c[1]中。依此類推,即可求出c的所有位。

最後將c輸出即可。

#include

#include

using

namespace std;

char arr1[

110]

, arr2[

110]

;void

exchange

(char

& a,

char

& b)

intmain()

for(

int i =

0; i < len1 /2;

++i)

exchange

(arr1[i]

, arr1[len1 -

1- i]);

for(

int i =

0; i < len2 /2;

++i)

exchange

(arr2[i]

, arr2[len2 -

1- i]);

arr1[len1]

= arr2[len2]

='0'

;for

(int i = len2; i < len1 +1;

++i)

arr2[i]

='0'

;for

(int i =

0,flag=

0; i < len1+1;

++i)

for(

int i = len1 -

1; i >=0;

--i)

cout << arr1[i]

;//while (1);

return0;

}

改進:倒序儲存沒有必要

注意在短字串前面填充『0』和長字串對齊

大數,高精度計算 大數加法

大數是演算法語言中的資料型別無法表示的數,其位數超過最大資料型別所能表示的範圍,所以,在處理大數問題時首先要考慮的是怎樣儲存大數,然後是在這種儲存方式下其處理的實現方法。一般情況下大數的儲存是採用字元陣列來儲存,即將大數當作乙個字串來儲存,而對其處理是按其處理規則在陣列中模擬實現。思路很常規。先用字...

4 大數,高精度計算 大數加法

大數是演算法語言中的資料型別無法表示的數,其位數超過最大資料型別所能表示的範圍,所以,在處理大數問題時首先要考慮的是怎樣儲存大數,然後是在這種儲存方式下其處理的實現方法。一般情況下大數的儲存是採用字元陣列來儲存,即將大數當作乙個字串來儲存,而對其處理是按其處理規則在陣列中模擬實現。思路很常規。先用字...

大數系列 大數加法

這幾天專門學習了一下大數的有關計算方法,大數加減乘除模都會在後面講到。一 大數加法 加法算是最簡單的一類大數問題,先寫上我的 include includeusing namespace std char num1 111 num2 111 num3 111 int l,m int mark voi...