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

HJ57 高精度整數(shù)加法

這篇具有很好參考價值的文章主要介紹了HJ57 高精度整數(shù)加法。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

題目:

HJ57 高精度整數(shù)加法

題解:

1.逐位相加

按照傳統(tǒng)加減法模式,從最后一位開始,逐位相加,逢十進(jìn)一,傳統(tǒng)方式從右往左相加,可以將數(shù)字翻轉(zhuǎn),變成從左往右按照數(shù)組遍歷順序相加,最后再將結(jié)果翻轉(zhuǎn)。


    public String getSum(String str1, String str2) {
        // 翻轉(zhuǎn)
        List<Integer> list1 = revers(str1);
        List<Integer> list2 = revers(str2);

        int len1 = list1.size();
        int len2 = list2.size();

        int carryBit = 0;
        StringBuilder sb = new StringBuilder();
        int length = len1 > len2 ? len1 : len2;
        for (int i = 0; i < length; i++) {
            // 如果超出則取0
            int value1 = getValue(list1, i);
            int value2 = getValue(list2, i);
            int sum = value1 + value2 + carryBit;
            if (sum < 10) {
                sb.append(sum);
                carryBit = 0;
            } else {
                sb.append(sum % 10);
                carryBit = sum/10;
            }
        }

        // 如果最后還有進(jìn)位,需要添加進(jìn)位
        if (carryBit != 0) {
            sb.append(carryBit);
        }

        // 翻轉(zhuǎn)結(jié)果
        sb.reverse();
        return sb.toString();
    }

    private int getValue(List<Integer> list, int index) {
        if (index >= list.size()) {
            return 0;
        }

        return list.get(index);
    }

    private List<Integer> revers(String str) {
        char[] chars = str.toCharArray();
        List<Integer> list = new ArrayList<>(chars.length);

        for (int i = chars.length - 1; i >= 0; i--) {
            list.add(chars[i] - '0');
        }

        return list;
    }

時間復(fù)雜度:O(n+m)文章來源地址http://www.zghlxwxcb.cn/news/detail-708893.html

2.利用大整形類型BigInteger實現(xiàn)

    public String getSum(String str1, String str2) {
        BigInteger bigInteger1 = new BigInteger(str1);
        BigInteger bigInteger2 = new BigInteger(str2);

        bigInteger1 = bigInteger1.add(bigInteger2);
        return bigInteger1.toString();
    }

到了這里,關(guān)于HJ57 高精度整數(shù)加法的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • 高精度加法

    高精度問題是指兩個數(shù)字非常大,超過了 int ,甚至 long long 的范圍,數(shù)字的位數(shù)甚至能達(dá)到 (10^5) ,那么如果要實現(xiàn)這樣兩個大數(shù)字的運算,需要解決以下兩個問題: 如何存儲? 這樣的兩個數(shù)字相加是不可能用普通類型來存儲的,所以我們第一個要解決的問題就是如何存儲

    2024年02月08日
    瀏覽(98)
  • [高精度加法與動態(tài)規(guī)劃混合] 數(shù)樓梯

    樓梯有 N N N 階,上樓可以一步上一階,也可以一步上二階。 編一個程序,計算共有多少種不同的走法。 一個數(shù)字,樓梯數(shù)。 輸出走的方式總數(shù)。 樣例輸入 #1 樣例輸出 #1 對于 60 % 60% 60% 的數(shù)據(jù), N ≤ 50 N leq 50 N ≤ 50 ; 對于 100 % 100% 100% 的數(shù)據(jù), 1 ≤ N ≤ 5000 1 le N leq 5

    2024年01月21日
    瀏覽(17)
  • 高精度加法,減法,乘法,除法(下)(C語言)

    高精度加法,減法,乘法,除法(下)(C語言)

    前言 上一篇博客我們分享了高精度加法,減法,這一期我將為大家講解高精度乘法和高精度除法。那讓我們開始吧! 對加法和減法感興趣的話就點我 讓我們想想我們平時做數(shù)學(xué)時遇見乘法是怎么做的。以下圖為例。 高精度乘法也是這樣的一個思路,首先我們先把a和b的值儲存

    2024年02月04日
    瀏覽(94)
  • 高精度加法,減法,乘法,除法(上)(C語言)

    高精度加法,減法,乘法,除法(上)(C語言)

    前言 本篇內(nèi)容介紹加法和減法,如果想看乘法和除法就點這里-高精度乘法,除法 加,減,乘,除這些運算我們自然信手捏來,就拿加法來說,我們要用c語言編程算a+b的和,只需讓sum = a+b即可,可是這是局限的,我們都知道int的表示的最大值為2147483647(32位和64位機器)。但

    2024年02月03日
    瀏覽(22)
  • 算法筆記——高精度算法(附源碼)

    算法筆記——高精度算法(附源碼)

    ??作者介紹:22級樹莓人(計算機專業(yè)),熱愛編程<目前在c++階段, 因為最近參加新星計劃算法賽道(白佬),所以加快了腳步,果然急迫感會增加動力 ——目標(biāo)Windows,MySQL,Qt,數(shù)據(jù)結(jié)構(gòu)與算法,Linux,多線程,會持續(xù)分享學(xué)習(xí)成果和小項目的 ??作者主頁:熱愛編程的

    2023年04月08日
    瀏覽(91)
  • 高精度算法詳解

    高精度算法詳解

    首先要知道為什么需要高精度算法: 高精度算法是 處理大數(shù)字 的數(shù)學(xué)計算方法,當(dāng)數(shù)字過大不能用 int 和 long long 存儲時,我們就可以 使用string和vector類型 來存儲他們的每一位,然后進(jìn)行計算。 我們可以先把要輸入的兩個數(shù)字放到vector中存儲,注意要 反著存(后邊做加法

    2024年01月17日
    瀏覽(93)
  • 高精度算法筆記·····························

    高精度算法筆記·····························

    加法 減法 乘法 除法 高精度加法的步驟: 1.高精度數(shù)字利用字符串讀入 2.把字符串 翻轉(zhuǎn) 存入兩個整型數(shù)組A、B 3.從低位到高位,逐位求和,進(jìn)位,存余 4.把數(shù)組C從高位到低位依次輸出 ????????1.2為準(zhǔn)備 ? ? ? ? 3為加法具體實現(xiàn)(0按位取反為-1,即-1時結(jié)束等價于=0) ?

    2024年01月21日
    瀏覽(92)
  • C++高精度算法

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

    2024年02月14日
    瀏覽(96)
  • 【算法】模擬,高精度

    【算法】模擬,高精度

    ? P1601 A+B Problem(高精) - 洛谷 | 計算機科學(xué)教育新生態(tài) (luogu.com.cn) 思路就是模擬,值得注意的就是要用字符串類型輸入。存進(jìn)自己的int數(shù)組時要倒著存,因為如果是正著存的話,進(jìn)位會有點trouble。 時間復(fù)雜度O(max(m,n)) ?? P1303 A*B Problem - 洛谷 | 計算機科學(xué)教育新生態(tài) (lu

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

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

    ??作者主頁:慢熱的陜西人 ??專欄鏈接:C++算法 ??歡迎各位大佬??點贊??關(guān)注??收藏,??留言 主要講解了高精度算法的四種常用的計算 以下數(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日
    瀏覽(26)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包