如果系統要使用超大整數(超過long長度范圍),請你設計一個數據結構來存儲這種超大型數字以及設計一種算法來實現超大整數加法運算


package interview_10_10;

import org.junit.Test;

public class T1 {

    /**
     * 如果系統要使用超大整數(超過long長度范圍),請你設計一個數據結構來存儲這種超大型數字以及設計一種算法來實現超大整數加法運算)。
     */
    @Test
    public void test1() {
        String number1 = "4324328732789";
        String number2 = "2383244324324325898";
        String result = doAdd(number1, number2);
        System.out.println(result);

    }

    /**
     * @param num1
     * @param num2
     * @return  返回結果
     * 1.計算小的那個左邊需要補幾個0
     * 2.從右邊開始一個個的開始相加
     */
    public static String doAdd(String num1, String num2) {
        String str = "";
        int lena = num1.length();
        int lenb = num2.length();
        
        int maxlength = lena > lenb ? lena : lenb;
        int minlength = lena < lenb ? lena : lenb;

        String strtemp = "";
        for (int i = (maxlength - minlength); i > 0; i--) { // 計算左邊需要補幾個0
            strtemp += 0;
        }
        if (maxlength == lena) { // 左邊補零
            num2 = strtemp + num2;
        } else {
            num1 = strtemp + num1;
        }
        int jw = 0;
        for (int i = (maxlength - 1); i >= 0; i--) {
            int temp = 0;
            int number1 = Integer.valueOf(String.valueOf(num1.charAt(i)));
            int number2 = Integer.valueOf(String.valueOf(num2.charAt(i)));

            if (number1 + number2 + jw > 10 && i != 0) {
                temp = number1 + number2 + jw - 10;
            } else {
                temp = number1 + number2 + jw;
            }
            str = String.valueOf(temp) + str;
        }
        return str;
    }
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



猜您在找 一種整數數據壓縮存儲的算法實現 JavaScript超大整數加法 P1427 小魚的數字游戲 小魚最近被要求參加一個數字游戲,要求它把看到的一串數字(長度不一定,以0結束,最多不超過100個,數字不超過2^32-1),記住了然后反着念出來(表示結束的數字0就不要念出來了)。這對小魚的那點記憶力來說實在是太難了,你也不想想小魚的整個腦袋才多大,其中一部分還是好吃的肉!所以請你幫小魚編程解決這個問題。 輸入輸出格式 輸入格式: 一行內輸入一串整數,以0結束,以空 棧是常用的一種數據結構,有 n 個元素在棧頂端一側等待進棧,棧頂端另一側是 出棧序列。你已經知道棧的操作有兩種:push 和 pop,前者是將一個元素進棧,后 者是將棧頂元素彈出。現在要使用這兩種操作,由一個操作序列可以得到一系列 的輸出序列。請你編程求出對於給定的 n,計算並輸出由操作數序列 1,2,…,n, 經過一系列操作可能得到的輸出序列總數。 數據結構作業——P53算法設計題(6):設計一個算法,通過一趟遍歷確定長度為n的單鏈表中值最大的結點 三元組順序表表示的稀疏矩陣的轉置和加法運算的實現----《數據結構》 設計一個程序,有一個虛擬存儲區和內存工作區,實現下述三種算法中的任意兩種,計算訪問命中率(命中率=1-頁面失效次數/頁地址流長度)。附加要求:能夠顯示頁面置換過程。算法包括:先進先出的算法(FIFO)、最少使用算法(LFU)、最近未使用算法(NUR) 22222設計一個程序,有一個虛擬存儲區和內存工作區,實現下述三種算法中的任意兩種,計算訪問命中率(命中率=1-頁面失效次數/頁地址流長度)。附加要求:能夠顯示頁面置換過程。算法包括:先進先出的算法(FIFO)、最少使用算法(LFU)、最近未使用算法(NUR) 數據結構的四種基本存儲結構 一個簡單的算法---實現找出數組中一個數字出現次數最多的數字
 
粵ICP備18138465號   © 2018-2026 CODEPRJ.COM