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

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

這篇具有很好參考價(jià)值的文章主要介紹了求2的N次冪(C++)解決高精度運(yùn)算。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

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

???內(nèi)容專欄:《C/C++專欄》
??本文概括: 計(jì)算高精度的2的N次方數(shù)字。
??本文作者:花 碟
??發(fā)布時(shí)間:2023.6.22

?前言

為什么不直接利用int、float、double等類型進(jìn)行存儲計(jì)算,因?yàn)樗鼈兪谴嬖谟行?shù)據(jù)范圍的, 比如說int的范圍是 -2147483648 ~ 2147483647 字節(jié),數(shù)值最多占據(jù)10位,8字節(jié)的 long int 型的取值范圍是-9,223,372,036,854,775,808~9,223,372,036,854,775,807,而如果想存儲更大的數(shù)字的話,有效范圍之內(nèi)并不能容忍得下,超出的數(shù)據(jù)就會導(dǎo)致精度的丟失,故而以下解法是針對高精度計(jì)算問題,利用數(shù)組的每一個(gè)元素去模擬數(shù)值的位數(shù)。????

求2的N次方,N ≤ 10000

首先,我們應(yīng)該要把數(shù)字存儲倒序存儲到數(shù)組當(dāng)中,數(shù)值的個(gè)位放到數(shù)組a[0]的位置,十位放到數(shù)組a[1]的位置,百位放到數(shù)組a[2]的位置……依次類推,為什么要倒序存儲呢,因?yàn)槲覀冃枰獙?shù)值進(jìn)行運(yùn)算,比如說如果將12345678912345正序存儲,將這個(gè)數(shù)值乘上2,那么可能會涉及到進(jìn)位運(yùn)算,如果進(jìn)位到最高位之后還需要進(jìn)1,那么此時(shí)數(shù)組a[0]的位置就不容易修改了,所以我們將最低位放到數(shù)組首元素位置。

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

實(shí)現(xiàn)思路:

??注:為了方便理解,我們暫時(shí)將畫圖中給定的數(shù)值為 12345678912345。本題的實(shí)現(xiàn),注意數(shù)組初始化必須為1,才能保證求2的N次冪得到想要的結(jié)果。

首先將2N轉(zhuǎn)換為一共有多少位,取以10為底的對數(shù),即 log102N,轉(zhuǎn)換為N * log102 ,題目要求N最多取10000,換算大概3010多位,因?yàn)榭隙ê羞M(jìn)位,所以我們將數(shù)組的大小定義為3100個(gè),從數(shù)組的a[0]位置模擬個(gè)位,a[1]位置模擬十位……開始計(jì)算,我們需要將數(shù)組的元素初始化為1,因?yàn)?乘以任何數(shù)都是任何數(shù)。然后用t來存儲當(dāng)前數(shù)值是否需要進(jìn)行進(jìn)位,如果是進(jìn)位的話需要加到下個(gè)數(shù)值里面去,所以我們寫成 t += a[j] * 2; 然后將取模運(yùn)算得下的個(gè)位數(shù),放到b數(shù)組對應(yīng)的位置(實(shí)現(xiàn)時(shí),我們不需要開辟b數(shù)組,直接對a數(shù)組進(jìn)行覆蓋即可,這里方便理解,所以放到b數(shù)組之中),再繼續(xù)運(yùn)算,上一位進(jìn)位的t加上本次a數(shù)組對應(yīng)的值乘上2 依然能夠整除10,那么結(jié)果為1,就表示進(jìn)位,再給到t,否則為0,表示不進(jìn)位。……以此類推,最后為了保證數(shù)組的有效個(gè)數(shù)的位置,我們用m來記錄,一旦每次乘以2之后,t進(jìn)位為1,就讓m++。最后輸出數(shù)組中的值,我們就要倒過來輸出,我們從m - 1的位置一直輸出的0即可,因?yàn)?code>m++是后置的,多加了一次,所以m需要減去1。

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

代碼實(shí)現(xiàn):

????

#include <iostream>
const int N = 3300;
using namespace std;

int main() {
  
    // 最低為數(shù)字是1,因?yàn)樗艘匀魏螖?shù)都是任何數(shù)
    int a[N] = {1};
    int n;
    cin >> n;
    //m標(biāo)記進(jìn)位完后的位置
    int m = 1;
    // 輸入的 n 是 2 的冪次,并非乘數(shù)
    for (int i = 0; i < n; i++) {
        int t = 0;
        // 循環(huán)內(nèi)的數(shù)字從低位不斷被取出,這些數(shù)字都從左到右存放,也就是個(gè)位數(shù)在最左端,每次從數(shù)組a中讀取個(gè)位十位,分別與 2 相乘
        // 運(yùn)算后把數(shù)字存回原數(shù)組
        for (int j = 0; j < m; j++) {
            t += a[j] * 2;
            a[j] = t % 10;
            t /= 10;
        }
        // 負(fù)責(zé)進(jìn)位,for循環(huán)最后一個(gè)操作是 t / 10,由于乘以2,最大為19, 因此若商為1,必定進(jìn)位1
        if (t) a[m++] = 1;
    }
	//m多加了1次,減去1
    for (int i = m - 1; i >= 0; i--) cout << a[i];

    return 0;
}

測試結(jié)果

輸入10000,210000的結(jié)果如下:
求2的N次冪(C++)解決高精度運(yùn)算文章來源地址http://www.zghlxwxcb.cn/news/detail-497662.html

到了這里,關(guān)于求2的N次冪(C++)解決高精度運(yùn)算的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • 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++ 算法 高精度(較詳細(xì).)

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

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

    2023年04月10日
    瀏覽(19)
  • 高精度除法【c++實(shí)現(xiàn)】超詳細(xì)講解

    高精度算法分為兩種,高精除以低精和高精除以高精。不要看都是除法,就認(rèn)為原理類似,其實(shí)是有很大差距的。讓我們一起來學(xué)習(xí)吧! 有句話說在前面,如果除數(shù)等于0,就不要算了,不成立。( 如果你忘了這個(gè)知識,小學(xué)數(shù)學(xué)老師饒不了你 ) 高精度除低精度,原理是模

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

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

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

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

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

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

    2024年01月23日
    瀏覽(21)
  • 【分享】高精度RTK定位解決方案

    【分享】高精度RTK定位解決方案

    高精度RTK定位系統(tǒng)采用高精度定位標(biāo)簽,通過計(jì)算機(jī)技術(shù)、地理信息技術(shù)、移動定位技術(shù)、通信技術(shù)、網(wǎng)絡(luò)技術(shù),為生產(chǎn)現(xiàn)場作業(yè)人員配發(fā)定位終端,實(shí)時(shí)追蹤其位置信息進(jìn)行相關(guān)管控,為其活動提供安全技術(shù)保障。 ? 近年來,隨著鐵路建設(shè)的不斷推進(jìn),我國鐵路行業(yè)不斷發(fā)

    2024年02月03日
    瀏覽(28)
  • 雙目相機(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)
  • 【分享】5G+北斗RTK高精度人員定位解決方案

    【分享】5G+北斗RTK高精度人員定位解決方案

    5G+北斗RTK高精度定位系統(tǒng)旨在通過5G網(wǎng)絡(luò)實(shí)時(shí)提供亞米級、厘米級、毫米級高精度定位服務(wù),構(gòu)建全天候、全天時(shí)、全地理的精準(zhǔn)時(shí)空服務(wù)體系。 伴隨著信息技術(shù)日新月異的發(fā)展,各類“智慧”順勢而出,智慧城市、智慧醫(yī)院、智慧工廠、智慧電廠等等如雨后春筍,與工業(yè)

    2023年04月09日
    瀏覽(27)
  • (基礎(chǔ)算法)高精度加法,高精度減法

    (基礎(chǔ)算法)高精度加法,高精度減法

    什么叫做高精度加法呢?包括接下來的高精度減法,高精度乘法與除法都是同一個(gè)道理。正常來講的話加減乘除,四則運(yùn)算的數(shù)字都是整數(shù),也就是需要在int的范圍之內(nèi),但當(dāng)這個(gè)操作數(shù)變得非常\\\"大\\\"的時(shí)候( 其實(shí)就是一個(gè)字符串,比方說有一個(gè)數(shù)是20位,如果用整數(shù)視角來

    2024年02月01日
    瀏覽(93)
  • 高精度加法(含代碼)

    例如: 1111111111111+9, 列成 豎式 , 先算個(gè)位, 1 + 9 = 10 , 滿 10 , 向十位進(jìn) 1 。 接下來, 處理 進(jìn)位 。 十位: 1+1=2 - 2 百位: 無進(jìn)位, 直接照抄. 1 - 1 千位: 1 - 1 萬位: ... ...: ... 最高位: 1 - 1 最終結(jié)果: 所以, 1111111111111+ 9 = 1111111111120 1111111111111+8888888888889, 這個(gè)算式變成了 高精度 + 高精度

    2024年02月06日
    瀏覽(27)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包