高精度加法減法乘法模板 (附題目鏈結)

2021-10-02 13:12:19 字數 2421 閱讀 7806

#include

using

namespace std;

intmain()

,xb[

1000]=

,xc[

1000]=

;//轉為數字陣列

for(i=

0;ilength()

;i++

)

xa[i]

=a[a.

length()

-i-1]-

'0';

for(i=

0;ilength()

;i++

) xb[i]

=b[b.

length()

-i-1]-

'0';

for(i=

0;ilength()

;i++

) xc[i]

=c[c.

length()

-i-1]-

'0';

//高精度加法

int cnt=

max(a.

length()

,b.length()

);for(i=

0;i) cnt=

(cnt>c.

length()

)?cnt:c.

length()

;//高精度比較

bool check=

true

,same=

true

;for

(i=cnt;i>=

0;i--)}

if(same)cout<<

"no"

"yes"

<"no"

<}return0;

}

關鍵**while(!xa[i]&&i)i--;

如果沒有,55-55就會等於00

用到公式:(a-b)= -(b-a)

解決思路:特判

特判當字串1所表示的數小於字串2所表示的數

關鍵**if((a例如:9<89,因為9>8

12300>123,前三位相等,但是前面的字串位數多

#include

using

namespace std;

bool pd;

string a,b;

intmain()

int i;

int xa[

10500]=

,xb[

10500]=

;for

(i=0

;ilength()

;i++

)xa[i]

=a[a.

length()

-i-1]-

'0';

for(i=

0;ilength()

;i++

)xb[i]

=b[b.

length()

-i-1]-

'0';

int t;

for( i=

0;i<

max(a.

length()

,b.length()

);i++

)else xa[i]

=t;}

while

(!xa[i]

&&i)i--

;//很重要,去掉前導0

if(pd==

true

)cout<<

"-";

for(

;i>=

0;i--

)cout<;return0;

}

for

(i=0

;ilength()

;i++

)for

(j=0

;jlength()

;j++

)

#include

using

namespace std;

bool pd;

string a,b;

int xa[

10005

],xb[

10005

],c[

10005];

intmain()

for(i=

0;ilength()

+b.length()

;i++)}

while

(!c[i]

&&i)i--

;for

(;i>=

0;i--

)cout<;return0;

}

高精度加法 減法 乘法 除法

給定兩個正整數,計算它們的和。輸入格式 共兩行,每行包含乙個整數。輸出格式 共一行,包含所求的和。資料範圍 1 整數長度 100000 輸入樣例 1223 輸出樣例 35高精度加法利用陣列儲存每一位數,把最後一位儲存到陣列的第一位會方便操作一些,然後就是模擬人為加法的過程 include using...

高精度演算法 加法,減法,乘法

高精度演算法 日期 11月10日 include includevoid add char a,char b void sub char a,char b void mul char a,char b int main n2 202 scanf s s n1,n2 陣列名稱為首位址 add n1,n...

高精度加法 高精度減法

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