高精度演算法

2021-10-03 01:30:07 字數 1422 閱讀 7511

大數運算的實質就是用陣列代替變數進行豎式運算

個位 十位 百位a[1

] a[

2] a[3]

b[1] b[

2] b[3]

c[1] c[

2] c[

3]

c[1] += a[1]+b[1];//求和

c[2] +=c[1]/10;//進製

c[1] %= 10;//更新數字

高精度求和例題

保證a>b 否則交換

若同為相減小於0,則數字+10,高位-1

同數字作差

高精度減法例題

b的每個數字都要乘一遍a,雙for遍歷a,b

每當b的數字往前+1,儲存乘積的c下標應當相應的+1

求和進製

更新乘法例題

示例**

#include

using

namespace std;

string a,b;

int a[

100005

],b[

100005

],c[

100005];

int la,lb,lc;

intmain()

for(

int i=

1;i<=lb;i++

)for

(int i=

1;i<=la;i++)}

lc = la+lb;

while

(!c[lc]

&& lc>1)

for(

int i=lc;i>=

1;i--

)return0;

}

判斷是否是數字(高進製出現字母)

將字母轉換成對應數 如:b-65+10

改變進製規則

注意輸出時大於9的數換成字母輸出

例題示例**

#include

using

namespace std;

int b,t[

20000

],k[

20000

],res[

20000];

intmain()

else

}for

(int i=

0;ilength()

;i++

)else

}for

(int i=

0;i)int i=len;

while(1

) i--;}

for(

int j=i;j>=

0;j--)}

return0;

}

1.5除法

高精度除法

演算法 高精度乘法2(高精度乘高精度)

題目描述 高精度乘,求兩個很大的非負整數相乘的結果。輸入 2個非負整數,每個一行,每個整數不超過240位。輸出 乙個整數,表示相乘的結果。例子 為了和演算法對應方便,用上面數乘下面數的方法12 5 2512 5502 5312 5為了運算方便,將上面兩數倒置,得到的結果也為倒序下標0 1234 56...

高精度演算法 791 高精度加法

給定兩個正整數,計算它們的和。輸入格式 共兩行,每行包含乙個整數。輸出格式 共一行,包含所求的和。資料範圍 1 整數長度 100000 輸入樣例 1223 輸出樣例 35注意點 1.兩個整數較大,用字串來存,這樣的話,可以呼叫它的size 方法 2.將兩個大的整數,存入vector陣列中,最好把整數...

高精度演算法

任務 高精度,計算大數乘小數 引數 乘法函式mul引數為 被乘數a,儲存最終結果的ans陣列,乘數b 結果 ans陣列中ans 0 為最高位,以此類推 include include using namespace std void mul char a,char ans,int b 任務 高精度,...