高精度算法
写在前面
其实写这个只是给自己稍微总结一下学到的一些东西。由于本人过于菜鸡,所以都是很基础的算法,复杂的我也学不会。
自己尽量会写的正确点&易懂点,但仍可能会有错误,所以…带个人思考的看…?
高精度加法
1 | string add(string a, string b) { |
注意:仅适用于a,b>0;
感觉高精度加法没什么好说的,很基础的做法,效率也不错。
高精度减法
1 | string subtract(string a, string b) { |
注意:仅适用于a,b>0
可能的踩坑点:
- a<b时应该为负数,要额外加个“-“
- 前导0的问题。100-99不加处理的话会变成001;
- 结果为0的问题。如果删除前导0时不考虑这种情况,那么9-9将什么都不会输出
高精度乘法
1 | int tmp[50000]; |
注意:仅适用于a,b≥0
TO DO:高精度除法
高精度阶乘
以下代码并不适用于所有情况。实测当len = 200,N = 10e14;
时能计算出2!1000,结果后附供校对。
1 |
|
附录
1000!=4027905053122345768670558292183044930441094551528966419334642920075902370082550849878938111228748403226643957277673191284838468927263989687905690103501897786554341544337696514461654951538851077440410165819782073475583082079396504111380884916810768467471317168913183948275897490803646698793846190852594417739671786914563472162093180956284720843607311204509397095907530114810381703803860648328656344389023077975647748628886817466804724858587747840936784462436173977429991182753207302348016538494642001301432395279726745538178727708503090870745742249581124437084158031806471602854863650302741825130214652788342621283870175833906572656890104432413095171095723550851047360182700817666447833459792895738687627176555413740711174766651230998067853988678687826290258453911823151931683552388541377672034266969531263032928282242353491346302800844806465049776475547382410225945312773007777753106311513876495252759709844538004644399754092588008693631793342176842492508470741481293232916674588623413722692302481346190036322599946452493522794764716794743441163713920351740437121423299823949395456232332776903915931443305369962856388265027346155623332543302943446674383336948488594760969564013979720883843849399863648257295093077791964440615462408422804298527057377454368956529809230106268980768907112031757851014218189279824719907145202202917270740068875898030570292381329154485173914211657597582497807598793035565731652297925769886549168450867091163868402442018371341022143349409418974223779315401317123760884519266468022552657218233256445396109179244871088667489725189928143289796681735238195169437018438329910965407841035648914496097727448032065520547484257131085876715457907964421551419900383259923263102068452820395581311114047307468681426051322892063650122841004997271652977702547274337834459757112850838135183696311712170990224739928697694772853140476802033735594574707189941820656793611572800671948131128109558012358679446259496244143021997936801273888393124129184635058327016137044640473948916935678249463650959768200928958728748330673454723995492137365682778815741591206707652159624635871844554339227025068139536377423837689642266483656100701688393247498969109923908046589884791076785625508448585145127624556376778630678216900832228344056133887091191887194791815281908368889081528457290215134916585865098894556135702731215416389951458945610799992135000761012487815006429790911980447363257291071445797682737767437164395575815572538782046473911765828511673121820261887951566200568565033492247479478684738621107994804323593105039052556442336528920420940313
该内容采用 CC BY-NC-SA 4.0 许可协议,著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。