python高精度加法 高精度加法

2021-10-21 08:01:18 字數 1286 閱讀 9469

1. 思路

其實就是模擬,加法是最簡單的,從個位開始加,價位加到前一位,然後再取10的餘數。

for (int i = 1; i <=len ; ++i) {

// 計算和

c[i] += a[i]+b[i];

// 進製

c[i+1] = c[i]/10;

// 取10的餘數

c[i]%=10;

2. 實現

int len = max(a.length(),b.length());

// 倒著存,個位到十位,百位。。

for (int i = a.length()-1,j=1; i >=0 ; i--,j++) {

a[j] = a[i] - '0';

for (int i = b.length()-1,j=1; i >= 0; i--,j++) {

b[j] = b[i]-'0';

for (int i = 1; i <=len ; ++i) {

c[i] += a[i]+b[i];

c[i+1] = c[i]/10;

c[i]%=10;

if (c[len+1])len++;

// 逆序輸出

for (int i = len; i >=1 ; i--) {

cout<

luogu上面是從1開始,就是陣列0號位不用,我比較習慣從0開始用。

所以稍微適配一下從0開始的寫法:

string a,b;

cin>>a>>b;

int len = max(a.length(),b.length());

// 倒著存,個位到十位,百位。。

for (int i = a.length()-1,j=0; i >=0 ; i--,j++) {

a[j] = a[i] - '0';

for (int i = b.length()-1,j=0; i >= 0; i--,j++) {

b[j] = b[i]-'0';

for (int i = 0; i

c[i] += a[i]+b[i];

c[i+1] = c[i]/10;

c[i]%=10;

if (c[len])len++;

// 逆序輸出

for (int i = len-1; i >=0 ; i--) {

cout<

3. 相關題目

4. 後記

有時候不要懶,沒有那麼複雜,當然這個是裸的寫法,最好是整合到struct 封裝一下,再過載運算子來簡化一下操作,之後會總結。

高精度加法 高精度減法

雖然以前自己就學習過,但是自己打出來的 目測效率不高,也不夠精簡 因此學習一下eden裡面的這一題 big integer add subtract ifndef big integer define big integer include include using std string usin...

Python 高精度加法

問題描述 輸入兩個整數a和b,輸出這兩個整數的和。a和b都不超過100位。演算法描述 由於a和b都比較大,所以不能直接使用語言中的標準資料型別來儲存。對於這種問題,一般使用陣列來處理。定義乙個陣列a,a 0 用於儲存a的個位,a 1 用於儲存a的十位,依此類推。同樣可以用乙個陣列b來儲存b。計算c ...

高精度加法和高精度乘法

題目描述 谷學長有乙個非常簡單的問題給你,給你兩個整數a和b,你的任務是計算a b。輸入 輸入的第一行包含乙個整數t t 20 表示測試例項的個數,然後2 t行,分別表示a和b兩個正整數。注意整數非常大,那意味著你不能用32位整數來處理。你可以確定的是整數的長度不超過1000。輸出 對於每乙個樣例,...