//高精度乘法
string mul
(string a,string b)
,nb[maxn]
=,nc[maxn]
=,la=a.
size()
,lb=b.
size()
;for
(int i=la-
1;i>=
0;i--
) na[la-i]
=a[i]
-'0'
;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;i++
) nc[i+1]
+=nc[i]/10
,nc[i]%=
10;if(nc[la+lb]
) s+
=nc[la+lb]
+'0'
;for
(int i=la+lb-
1;i>=
1;i--
) s+
=nc[i]
+'0'
;return s ==
string
(la+lb-1,
'0')
?"0"
: s;
}//高精度浮點數乘法
intmain()
if(it != s.
end(
)) s.
erase
(it)
;else status =1;
if(s[0]
=='0')if
(s.size()
==0)return0&
puts
("0");
string ans
("1");
for(
int i =
0; i < n;
++i) ans =
mul(ans, s)
;int zn =
(l -
1- dot)
* n;
if(status ==0)
else
if(status ==-1
)if(status !=1)
if(ans[ans.
size()
-1]==
'.') ans.
erase
(ans.
end()-
1); cout << ans << endl;
return0;
}//高精度加法
string add
(string a,string b)
//只限兩個非負整數相加
,nb[maxn]=;
int la=a.
size()
,lb=b.
size()
;for
(int i=
0;i) na[la-
1-i]
=a[i]
-'0'
;for
(int i=
0;i) nb[lb-
1-i]
=b[i]
-'0'
;int lmax=la>lb?la:lb;
for(
int i=
0;i) na[i]
+=nb[i]
,na[i+1]
+=na[i]/10
,na[i]%=
10;if(na[lmax]
) lmax++
;for
(int i=lmax-
1;i>=
0;i--
) ans+
=na[i]
+'0'
;return ans;
}//高精度減法
string sub
(string a,string b)
,nb[maxn]=;
int la=a.
size()
,lb=b.
size()
;for
(int i=
0;i) na[la-
1-i]
=a[i]
-'0'
;for
(int i=
0;i) nb[lb-
1-i]
=b[i]
-'0'
;int lmax=la>lb?la:lb;
for(
int i=
0;i)while
(!na[
--lmax]
&&lmax>0)
;lmax++
;for
(int i=lmax-
1;i>=
0;i--
) ans+
=na[i]
+'0'
;return ans;
}//高精度快速冪
string quickpow
(string a,
int k)
return res;
}//高精度max
string max
(string a, string b)
return a;
}int
main()
//正負以及加減合併
intmain()
else
if(b[0]
=='-'
)else cout <<
add(a, b)
<< endl;
return0;
}//高精度階乘
intmain()
//高精度快速階乘/大數乘小數
#include
using
namespace std;
typedef
long
long ll;
const ll l =
1e14
;ll ans[
10005]=
;int
main()
if(c !=
0) ans[
++p]
= c;
}printf
("%lld"
, ans[p]);
for(
int i = p -
1; i >=0;
--i)
printf
(i ==0?
"%0.14lld\n"
:"%0.14lld"
, ans[i]);
return0;
}//高精度極速階乘(不會,先放著)
高精度除法(高精度除以高精度)
先貼乙個簡單的高精度除以單精度的 include include include using namespace std int main else ys ys 10 a i 0 while c i 0 i for int j i j 0 j printf d c j if ys printf d ...
高精度除高精度
演算法流程 第一步,讀入被除數 a 和 除數 b,判斷是否 a b,是則輸出 0 並結束演算法,否則令 answer 0 第二步,令餘數 remainder 0,令 i 從被除數最高位的下標開始 第三步,令 remainder remainder 10 a i 令 c 9 第四步,判斷是否 b c ...
高精度除以高精度
原 題 高精除以高精,求它們的商和餘數。演算法分析 高精除以高精是用減法模擬除法,對被除數的每一位都減去除數,一直減到當前位置的數字 包括前面的餘數 小於除數 由於每一位的數字小於10,所以對於每一位最多進行10次計算 代 碼 include include include using namesp...