国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

高精度除法【c++實(shí)現(xiàn)】超詳細(xì)講解

這篇具有很好參考價(jià)值的文章主要介紹了高精度除法【c++實(shí)現(xiàn)】超詳細(xì)講解。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

分類

高精度算法分為兩種,高精除以低精和高精除以高精。不要看都是除法,就認(rèn)為原理類似,其實(shí)是有很大差距的。讓我們一起來學(xué)習(xí)吧!

有句話說在前面,如果除數(shù)等于0,就不要算了,不成立。(如果你忘了這個(gè)知識(shí),小學(xué)數(shù)學(xué)老師饒不了你

高精除以低精

高精度除低精度,原理是模擬豎式除法,和高精度其他算法一樣都可以手動(dòng)計(jì)算來感受一下實(shí)現(xiàn)方法。下面來一個(gè)較為簡單的例子:1532?÷ 21 = 72......20

步驟

第一步:

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? yu = 1

ans 1/21 = 0
a 2 3 5 1
b 21

第二步:

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? yu = 15

ans 15/21 = 0 0
a 2 3 5 1
b 21

第三步:

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? yu = 153

ans 153/21=7 0 0
a 2 3 5 1
b 21

第四步:

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? yu = 62

ans 62/21 = 2 7 0 0
a 2 3 5 1
b 21

第五步:

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? yu = 20文章來源地址http://www.zghlxwxcb.cn/news/detail-643808.html

ans 2 7 0 0
a 2 3 5 1
b 21

核心代碼

	//核心代碼 
	for(int i = lena - 1; i >= 0; i--)
	{
		yu = yu * 10 + a[i];//模擬豎式除法中的落位 
		result[i] = yu / b;
		yu %= b;
	}

完整代碼

#pragma GCC optimize(3)
#pragma GCC target("avx")
#pragma GCC optimize("Ofast")
#pragma GCC optimize("inline")
#pragma GCC optimize("-fgcse")
#pragma GCC optimize("-fgcse-lm")
#pragma GCC optimize("-fipa-sra")
#pragma GCC optimize("-ftree-pre")
#pragma GCC optimize("-ftree-vrp")
#pragma GCC optimize("-fpeephole2")
#pragma GCC optimize("-ffast-math")
#pragma GCC optimize("-fsched-spec")
#pragma GCC optimize("unroll-loops")
#pragma GCC optimize("-falign-jumps")
#pragma GCC optimize("-falign-loops")
#pragma GCC optimize("-falign-labels")
#pragma GCC optimize("-fdevirtualize")
#pragma GCC optimize("-fcaller-saves")
#pragma GCC optimize("-fcrossjumping")
#pragma GCC optimize("-fthread-jumps")
#pragma GCC optimize("-funroll-loops")
#pragma GCC optimize("-fwhole-program")
#pragma GCC optimize("-freorder-blocks")
#pragma GCC optimize("-fschedule-insns")
#pragma GCC optimize("inline-functions")
#pragma GCC optimize("-ftree-tail-merge")
#pragma GCC optimize("-fschedule-insns2")
#pragma GCC optimize("-fstrict-aliasing")
#pragma GCC optimize("-fstrict-overflow")
#pragma GCC optimize("-falign-functions")
#pragma GCC optimize("-fcse-skip-blocks")
#pragma GCC optimize("-fcse-follow-jumps")
#pragma GCC optimize("-fsched-interblock")
#pragma GCC optimize("-fpartial-inlining")
#pragma GCC optimize("no-stack-protector")
#pragma GCC optimize("-freorder-functions")
#pragma GCC optimize("-findirect-inlining")
#pragma GCC optimize("-fhoist-adjacent-loads")
#pragma GCC optimize("-frerun-cse-after-loop")
#pragma GCC optimize("inline-small-functions")
#pragma GCC optimize("-finline-small-functions")
#pragma GCC optimize("-ftree-switch-conversion")
#pragma GCC optimize("-foptimize-sibling-calls")
#pragma GCC optimize("-fexpensive-optimizations")
#pragma GCC optimize("-funsafe-loop-optimizations")
#pragma GCC optimize("inline-functions-called-once")
#pragma GCC optimize("-fdelete-null-pointer-checks")
#pragma GCC optimize(2)
#include <bits/stdc++.h>
using namespace std;
const int N = 1e5 + 10;
string a1;
int b, yu;//b為除數(shù) 
int a[N], result[N];//a為被除數(shù),result為結(jié)果 
int main()
{
	cin >> a1 >> b;
	int lena = a1.size();
	//倒序存儲(chǔ) 
	for(int i = 0; i < lena; i++)
	{
		a[i] = a1[lena - i - 1] - '0';
	}
	//核心代碼 
	for(int i = lena - 1; i >= 0; i--)
	{
		yu = yu * 10 + a[i];//模擬豎式除法中的落位 
		result[i] = yu / b;
		yu %= b;
	}
	//去除前綴多余的0 
	int tmp = lena;
	while(result[tmp] == 0 && tmp > 0) tmp--;
	//倒序輸出 
	for(int i = tmp; i >= 0; i--) cout << result[i];
	cout << endl;
	cout << yu << endl; 
    return 0;
}

到了這里,關(guān)于高精度除法【c++實(shí)現(xiàn)】超詳細(xì)講解的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • C++ 算法 高精度(較詳細(xì).)

    C++ 算法 高精度(較詳細(xì).)

    ????????在我們進(jìn)行計(jì)算的過程中,經(jīng)常會(huì)遇到 幾十位,甚至幾百位的數(shù)字 的計(jì)算問題,也有可能會(huì)遇到小數(shù)點(diǎn)后幾十位,幾百位的情況,而我們面對(duì)這樣的情況下,?? 和 的數(shù)據(jù)范圍顯然是 不夠使用 的了。因此這時(shí),我們就需要引入一個(gè)新的算法,叫做 高精度算法

    2023年04月10日
    瀏覽(19)
  • C++實(shí)現(xiàn)高精度減法

    一、問題描述: ? ? ? ?高精度算法是處理大數(shù)字的數(shù)學(xué)計(jì)算方法。在一般的科學(xué)計(jì)算中,會(huì)經(jīng)常算到小數(shù)點(diǎn)后幾百位或者更多,當(dāng)然也可能是幾千億幾百億的大數(shù)字。一般這類數(shù)字我們統(tǒng)稱為高精度數(shù),高精度算法是用計(jì)算機(jī)對(duì)于超大數(shù)據(jù)的一種模擬加,減,乘,除,乘方

    2024年02月14日
    瀏覽(28)
  • C++高精度算法

    目錄 前言:? 思路: 高精度加法: 高精度減法: 高精度乘法: 高精度除法: ?代碼: 一、高精度加法 二、高精度減法? 三、高精度乘法? 四、高精度除法 最后 ? ? ? ? 計(jì)算機(jī)最初、也是最重要的應(yīng)用就是數(shù)值運(yùn)算。在編程進(jìn)行數(shù)值運(yùn)算時(shí),有時(shí)會(huì)遇到運(yùn)算的精度要求特

    2024年02月14日
    瀏覽(96)
  • C++高精度問題

    C++高精度問題

    C++中int不能超過2^31-1,最長的long long也不能超過2^63-1,所以我們?cè)陬}目中如果碰到了很長很長的數(shù),并且需要進(jìn)行大數(shù)運(yùn)算時(shí),就需要高精度存儲(chǔ)。 由于int和long long的限制,我們要想存放很長的數(shù)就需要利用數(shù)組存儲(chǔ),C++中可以利用STL中的vector容器存儲(chǔ) 讀取: ?由于數(shù)據(jù)很大,

    2024年01月24日
    瀏覽(24)
  • C++基礎(chǔ)算法高精度篇

    C++基礎(chǔ)算法高精度篇

    ??作者主頁:慢熱的陜西人 ??專欄鏈接:C++算法 ??歡迎各位大佬??點(diǎn)贊??關(guān)注??收藏,??留言 主要講解了高精度算法的四種常用的計(jì)算 以下數(shù)字均指位數(shù) ①A + B(精度均在10^6) ②A - B (精度均在10^6) ③A * b (len(A) = 10^6, a = 1000); ④A / b (len(A) = 10^6, a = 1000); Ⅲ. Ⅰ . A

    2024年02月16日
    瀏覽(27)
  • C++基礎(chǔ)算法①——高精度加減法計(jì)算

    C++基礎(chǔ)算法①——高精度加減法計(jì)算

    當(dāng)我們利用計(jì)算機(jī)進(jìn)行數(shù)值計(jì)算,有時(shí)候會(huì)遇到這樣的問題: n!的精確結(jié)果是多少? 當(dāng)n小于30的時(shí)候,我們當(dāng)然可以通過電腦自帶的計(jì)算器計(jì)算出來。但是當(dāng)我們遇到 100! 的時(shí)候就沒有辦法直接計(jì)算出精確的結(jié)果。再比如,求兩個(gè)20000位的數(shù)的和。 那怎么解決精度缺失的問

    2024年02月16日
    瀏覽(22)
  • 求2的N次冪(C++)解決高精度運(yùn)算

    求2的N次冪(C++)解決高精度運(yùn)算

    ???內(nèi)容專欄:《C/C++專欄》 ??本文概括: 計(jì)算高精度的2的N次方數(shù)字。 ??本文作者:花 碟 ??發(fā)布時(shí)間:2023.6.22 為什么不直接利用int、float、double等類型進(jìn)行存儲(chǔ)計(jì)算,因?yàn)樗鼈兪谴嬖谟行?shù)據(jù)范圍的, 比如說 int 的范圍是 -2147483648 ~ 2147483647 字節(jié),數(shù)值最多占據(jù)10位,

    2024年02月10日
    瀏覽(28)
  • 【c++】算法:高精度(經(jīng)典加減乘除){含解析(圖解)}

    【c++】算法:高精度(經(jīng)典加減乘除){含解析(圖解)}

    Hi~?o(* ̄▽ ̄*)ブ,今天來一起看看c++算法之高精度 之后會(huì)持續(xù)更新有關(guān)c++算法系列,歡迎觀看!(#^.^#) 目錄 前言 使用高精度的目的: 基本方法介紹:? ?一、A+B?problem 基本思路解析: 具體步驟: 代碼如下: 二、A-B problem 基本思路解析: ?編輯 具體步驟: ?代碼如下: ?三

    2024年01月23日
    瀏覽(21)
  • C語言 加減乘除模 的 高精度計(jì)算 (超詳細(xì))

    目錄 高精度加法 高精度乘法 高精度減法 ? ? ? ? ?高精度除法 高精度模法 ? 高精度計(jì)算 是模擬算法的一種,通過字符串和整型數(shù)組的使用,將加減乘除的豎式運(yùn)算 模擬 出來,達(dá)到計(jì)算的目的。其步驟大致分為:一,將字符串?dāng)?shù)據(jù)存到整型數(shù)組中,二,模擬算法,不同的

    2023年04月24日
    瀏覽(17)
  • 雙目相機(jī)標(biāo)定及高精度測量方法,含c++和python代碼說明

    視覺測量定位中,雙面相機(jī)高精度標(biāo)定是一個(gè)重要的步驟。下面是關(guān)于如何進(jìn)行雙面相機(jī)高精度標(biāo)定的說明和C++和Python代碼實(shí)現(xiàn)。 1. 雙面相機(jī)高精度標(biāo)定的原理 雙面相機(jī)高精度標(biāo)定的目的是確定相機(jī)內(nèi)部參數(shù)和外部參數(shù)。其中,內(nèi)部參數(shù)包括焦距、主點(diǎn)和畸變系數(shù)等,外部

    2023年04月08日
    瀏覽(23)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包