高精度乘法詳解

2021-10-21 02:29:54 字數 1459 閱讀 7035

與加減不同的地方,乘除法是用乙個數的某一位乘或除另乙個數的所有位。

推薦先學完高精度加法和減法。

高精度減法詳解

高精度加法詳解

儲存方法和最高位去零方法差不多。

這裡具體講解實現乘法豎式方法的方法。

首先乙個乘數的一位乘以另乙個乘數的全部位數,可以用二重迴圈實現。

發現c陣列的下標是a,b陣列下標之和。

明白以上兩點,離寫出**也不遠了。

接下來直接看**吧。

**實現:

#include

#include

using namespace std;

#define max 1000000

char a[max]

,b[max]

;int a[max]

,b[max]

,c[2

*max]

,temp,lena,lenb,lenc;

bool flag1=true,flag2=true;

intmain()

if(b[0]

=='-')if

(flag1==true&&flag2==false||flag1==false&&flag2==true)

cout<<

"-";

for(

int i=

0;i++i)

a[i]

=a[lena-

1-i]

-'0'

;for

(int i=

0;i++i)

b[i]

=b[lenb-

1-i]

-'0'

;for

(int i=

0;i++i)

c[i+lenb]

=temp;

}for

(int i=lenc-

1;i>=0;

--i)

else

}for

(int i=lenc-

1; i>=

0; i--

)return0;

}

例題練習:

求兩數的積。

兩行,兩個整數。

一行乙個整數表示乘積。

輸入 #1

1 

2

輸出 #1

2
每個數字不超過 10200010^102000 ,需用高精。

高精度減法,高精度乘法

高精度減法 oj資料偏弱如果新增乙個101 2就錯了,下面這一步是為了防止錯誤的 if a aa 0 可能出現第一位的1被借走的的情況,所以加乙個while找第乙個不是0的 while c i 0 i include include include include include include u...

高精度乘法

問題描述 給你兩個正整數a,b,計算它們的乘積。輸入格式 第一行乙個正整數a 第二行乙個正整數b 輸出格式 一行,表示a b 樣例輸入 111222333444555666777888999 999888777666555444333222111 樣例輸出 提示 a,b分別不超過100000位 ff...

高精度乘法

include include include includeusing namespace std const int maxn 5000 inline int get struct data data operator const data b for int i 1 i c.len i whi...