高精度演算法,屬於處理大數字的數學計算方法,解決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個數從小到大進行排序,...