輸入兩個整數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...