高精度正整數加法

2021-10-22 19:04:00 字數 1006 閱讀 9907

使用的是模擬手算的方法

例如:123456+123412

3456

+123

4=12

4690

我們手算時都是從最右邊開始豎著的那位相加的,依次向左重複豎著相加

//s1長度長,s2短

//這裡使用引用引數(&)是為了不要再生成s1,s2字串

void

add(string& s1, string& s2)

if(cnt ==1)

(*longstr)

="1"+(

*longstr)

;return

(*longstr);}

intmain()

else

//相加

add(

*p1,

*p2)

;return0;

}

注意這兩句

longstr = s1.

length()

>= s2.

length()

?&s1 :

&s2;

shortstr = s1.

length()

< s2.

length()

?&s1 :

&s2;

不能同時使用<>號,因為如果兩個字串長度相等時,這兩個字元指標會指向同乙個字串。

為了使用方便,一邊會選擇重構+號,使+能夠對字串進行我們這個高精度正整數加法

//過載+

string operator

+(string &s1, string &s2)

if(cnt ==1)

(*longstr)

="1"+(

*longstr)

;return

(*longstr)

;}

高精度整數加法 OJ

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

高精度 大整數加法

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

高精度正整數乘法問題

給定任意兩個高精度正整數a b,計算a與b的乘積。輸入檔案中有若干行,每一行上有兩個用字串表示的正整數a,b。輸入直到檔案結束。對每個輸入行上的兩個正整數a,b,在一行上先輸出形式a b 接著輸出a與b的積。12345 6788466 345 66 12345 6788466 83803612770...