高精度乘法:
#include
using namespace std;
const
int l =
2001
;const
int ll=
4001
;string mul
(string a,string b)
,nb[l]
=,nc[ll]=;
int la=a.
size()
,lb=b.
size()
;for
(int i=la-
1;i>=
0;i--
) na[la-i]
=a[i]
-'0'
;//將字串表示的大整形數轉成i整形陣列表示的大整形數
for(
int i=lb-
1;i>=
0;i--
) nb[lb-i]
=b[i]
-'0'
;for
(int i=
1;i<=la;i++
)for
(int j=
1;j<=lb;j++
) nc[i + j -1]
+= na[i]
* nb[j]
;for
(int i=
1;i<=la+lb-
1;i++
) nc[i+1]
+= nc[i]/10
,nc[i]%=
10;int f=la+lb;
while
(nc[f]==0
&&f>1)
f--;/*if(nc[la + lb])
ans += nc[la + lb -1] +'0';*/
//如果是 0 * 10 的話答案會出現兩個零
for(
int i=f;i>=
1;i--
) ans+
=nc[i]
+'0'
;return ans;
}int
main()
高精度加法:
#include
using namespace std;
const
int ll =
501;
string add
(string a, string b)
,nb[ll]=;
int la = a.
size()
,lb = b.
size()
;for
(int i=
0;i < la;i++
)for
(int i=
0;i < lb;i++
)int max = la > lb ? la : lb;
for(
int i=
0;i < max;i++)if
(na[max]
) max++
;for
(int i=max -
1;i >=
0;i--
) ans+
=na[i]
+'0'
;return ans;
}int
main()
return0;
//如果長度相同,每一位也一樣,就返回0,說明相等
}string sub
(string a,string b)
,nb[ll]=;
int la = a.
size()
,lb = b.
size()
;for
(int i=
0;i < la;i++
)for
(int i=
0;i < lb;i++
)int max = la > lb ? la : lb;if(
cmp(a,b)==0
)}while
(!na[
--max]
&&max>0)
;//去0
max++
;for
(int i=max -
1;i>=
0;i--
) ans+
=na[i]
+'0'
;return ans;
}else
}while
(!nb[
--max]
&&max>0)
; max++
;for
(int i=max -
1;i>=
0;i--
) ans+
=nb[i]
+'0'
;return ans;}}
intmain()
演算法 高精度乘法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 任務 高精度,...