华为OJ——超长正整数相加

来源:互联网 发布:如何制作自己的软件 编辑:程序博客网 时间:2024/05/22 00:47

题目描述

  请设计一个算法完成两个超长正整数的加法。

  • 接口说明

    /*
    请设计一个算法完成两个超长正整数的加法。
    输入参数:
    String addend:加数
    String augend:被加数
    返回值:加法结果
    */
    public String AddLongInteger(String addend, String augend)
    {
    /在这里实现功能/

    return null;
    }

  • 输入描述:
    输入两个字符串数字

  • 输出描述:
    输出相加后的结果,string型

  • 示例1
    输入
    99999999999999999999999999999999999999999999999999
    1
    输出
    100000000000000000000000000000000000000000000000000

实现代码:

package cn.c_shuang.demo75;import java.util.Scanner;/** * 超长正整数相加 * @author Cshuang * */public class Main {    public static void main(String[] args) {        Scanner in=new Scanner(System.in);        while(in.hasNext()){            String a=in.next();            String b=in.next();            add(a,b);        }        in.close();    }    private static void add(String a, String b) {        char[]ch1=a.toCharArray();        char[]ch2=b.toCharArray();        int c=0;//进位        int len1=ch1.length;        int len2=ch2.length;        int temp = 0;        StringBuilder sb=new StringBuilder();        while(len1>0&&len2>0){            temp = ch1[len1-1]-'0'+ch2[len2-1]-'0'+c;            if(temp>=10){                c=temp/10;                temp%=10;            }else                c=0;            sb.append(temp);            len1--;            len2--;        }        int resLen=len1==0?len2:len1;//多于的部分        char[] resCh=len1==0?ch2:ch1;        while(resLen>0){            temp=resCh[resLen-1]-'0'+c;            if(temp>=10){                c=temp/10;                temp%=10;            }else                c=0;            sb.append(temp);            resLen--;        }        if(c!=0)            sb.append(c);        System.out.println(sb.reverse().toString());     }}
原创粉丝点击