如果系统要使用超大整数(超过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-2025 CODEPRJ.COM