首页 > 编程语言 >高精度加法(Java)

高精度加法(Java)

时间:2022-11-10 11:22:15浏览次数:47  
标签:Java 高精度 aList 加法 List add bList res size

题目描述

高精度加法,相当于 a+b problem,不用考虑负数

输入格式

分两行输入。 a , b ≤ 10^500

输出格式

输出只有一行,代表 a + b  的值。

思路

使用数组进行模拟,如果遇到进位则需要记录。为了方便计算进位,数据进行反向存储,如"123456"存储到数组中为[6,5,4,3,2,1]
注意:遍历结束之后,需要对最后的进位记录进行判断,如果有进位,需要加上最后的进位

代码

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class Main{

    public static void main(String[] args){

        Scanner sc = new Scanner(System.in);
        String a = sc.next();
        String b = sc.next();
        List<Integer> aList = new ArrayList<>();
        List<Integer> bList = new ArrayList<>();

        // a = "123456"
        for (int i = a.length()-1; i >= 0; i--) aList.add(a.charAt(i) - '0');   // aList = [6,5,4,3,2,1]
        for (int i = b.length()-1; i >= 0; i--) bList.add(b.charAt(i) - '0');

        List<Integer> res = add(aList,bList);
        for (int i = res.size()-1; i >= 0; i--)
            System.out.print(res.get(i));
    }

    private static List<Integer> add(List<Integer> aList, List<Integer> bList) {
        List<Integer> res = new ArrayList<>();

        int t = 0; // 记录位数的相加和

        for (int i = 0; i < aList.size() || i < bList.size(); i++){
            if (i < aList.size()) t += aList.get(i);
            if (i < bList.size()) t += bList.get(i);
            res.add(t % 10);
            t /= 10;
        }

        if (t != 0) res.add(1);  // 加上最后的进位
        return res;
    }

}

标签:Java,高精度,aList,加法,List,add,bList,res,size
From: https://www.cnblogs.com/en-xiao/p/16867072.html

相关文章

  • 无法打开调试器端口(127.0.0.1:xxxx): java.net.BindException "Address already
    开启项目突然报错1099端口冲突和debug端口冲突,修改端口号没有用依旧冲突,查看端口进程为空,重新配置tomcat、重启电脑和关闭HyperV无效果。删除C:\Users\用户名\AppData\Lo......
  • 棋盘覆盖(java实现)
    棋盘覆盖问题描述在一个2k×2k个方格组成的棋盘中,恰有一个方格与其它方格不同,称该方格为一特殊方格,且称该棋盘为一特殊棋盘。在棋盘覆盖问题中,要用图示的4种不同形态的L......
  • Java对用户使用功能排序
    精确统计页面停留时长介绍页面停留时间(TimeonPage)简称Tp,是网站分析中很常见的一个指标,用于反映用户在某些页面上停留时间的长短,传统的Tp统计方法会存在一定的统计盲区......
  • ZooKeeper Java API
    ZooKeeper是一个分布式应用程序协调服务,主要用于解决分布式集群中应用系统的一致性问题。它能提供类似文件系统的目录节点树方式的数据存储,主要用途是维护和监控所存数据的......
  • Java输出SSL握手日志和查看cacerts路径
    在JAVA启动时添加下面的VM参数就可以启动握手日志了!!!-Djavax.net.debug=all另外,在debug日志中,有一个trustStoreis关键字,根据这个可以找到使用的是哪个truststor......
  • 电信AEP物联网平台JAVA SDK对接案例
    在AEP平台中创建应用,在应用详情中可查看AppKey和AppSecret信息。右下角可下载各个版本的sdk,这里我们选中java版本下载。下载的sdk中包含以下信息:demo包里面包含了各个......
  • 小新学Java6-【继承、super、this、抽象类】
    一、继承1.概述:多个类中存在相同属性和行为时,将这些内容抽取到单独一个类中,那么多个类无需再定义这些属性和行为,只要继承那一个类即可。其中,多个类可以称为子类,单独那一......
  • 【Javaweb】java中接口(interface)怎么用
    首先我们先了解什么是接口(interface)实际情况中,又是我们必须从几个类中派生出一个子类,继承他们所有的属性和方法。但是,JAVA中是不支持多重继承的,那么为了满足这一目的,就有......
  • 【java技术总结】java-8新特性:方法引用
    方法引用通过方法的名字来指向一个方法。方法引用可以使语言的构造更紧凑简洁,减少冗余代码。方法引用使用一对冒号::。下面,我们在Car类中定义了4个方法作为例子来......
  • JavaScript错误1
    JavaScript:Failedtoloadresource:theserverrespondedwithastatusof404(NotFound)  解决方法:1.打开idea设置,找到JavaScript保存即可  2.点击ok ......