入門 高精度計算 整數

2021-10-08 18:15:57 字數 2354 閱讀 8611

高精度演算法,屬於處理大數字的數學計算方法,解決long long也解決不了的問題。

加法乘法

1.加法

模擬算術

2333

+4396

=6729

現在模擬這個算式即可從低位到高位每一位相加

3 + 6 = 9 這一位應該為9, 而進製則為9 / 10 = 0

3 + 9 + 0 = 12 這一位為2,而進製則為12 / 10 = 1;

3 + 3 + 1 = 7 這一位為7,而進製則為7 / 10 = 0;

2 + 4 + 0 = 6 這一位為6,而進製則為6 / 10 = 0;

/*

***高精度加法模板

*/#include

//萬能標頭檔案

using

namespace std;

const

int max =

6000

;int a[max]

,b[max]

,c[max]

;int lena,lenb,len;

intmain()

while

(c[len +1]

>0)

//判斷最高位是否進製

len++

;for

(int i = len; i >

0; i--

)//倒置輸出

cout << c[i]

;return0;

}

1.乘法

兩個數均為非零整數

模擬算術

369 i

x7 j

6342

21= 2583

c[i+j-1]+=a[i]*b[j];

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

c[i+j-1]%=10;

#include

//萬能標頭檔案

using

namespace std;

const

int max =

6000

;int a[max]

,b[max]

,c[max]

;int lena,lenb,len;

intmain()

}while

(c[len +1]

>0)

//判斷最高位是否進製

len++

;for

(int i = len; i >

0; i--

)//倒置輸出

cout << c[i]

;return0;

}

string加法模板
string add

(string str1, string str2)

//高精度加法

else

len = str1.

size()

;int cf =0;

//進製數

int temp;

for(

int i = len -

1; i >=

0; i--)if

(cf!=

0)

str.

insert

(str.

begin()

,char

(cf+

'0'));

str.

erase(0

,str.

find_first_not_of

('0'))

;//去掉前導零

return str;

}

string乘法模板
string mul

(string str1,string str2)

if(cf !=0)

tempstr.

insert

(tempstr.

begin()

,char

(cf +

'0'));

} str =

add(str,tempstr);}

str.

erase(0

,str.

find_first_not_of

('0'))

;//去掉前導0

if(str=="")

//特判 0 的時候

return

"0";

return str;

}

高精度計算 大整數乘法

問題描述 求兩個不超過 200 位的非負整數的積。輸入資料 有兩行,每行是乙個不超過 200 位的非負整數,沒有多餘的前導 0。輸出要求 一行,即相乘後的結果。結果裡不能有多餘的前導 0,即如果結果是 342,那麼就不能 輸出為 0342。輸入樣例 12345678900 98765432100 輸...

高精度整數運算

問題描述 編寫乙個程式,進行高精度整數的加 減 乘運算。輸入兩個十進位製大整數m和 n m n最長可達 50位 根據要求計算運算結果並輸出。輸入形式 標準輸入上依次分行輸入以下內容 1.第一行輸入第乙個大整數m。m可能帶有負號,後面是最長可達 50位的數字序列。2.第二行只有乙個字元,可以是 分別代...

高精度整數 5

題目1190 大整數排序 題目描述 對n個長度最長可達到1000的數進行排序。輸入 輸入第一行為乙個整數n,1 n 100 接下來的n行每行有乙個數,數的長度範圍為1 len 1000。每個數都是乙個正數,並且保證不包含字首零。輸出 可能有多組測試資料,對於每組資料,將給出的n個數從小到大進行排序,...