HDOJ 1002 A + B Problem II 高精度的A+B问题

来源:互联网 发布:网络大电影受众人群 编辑:程序博客网 时间:2024/05/24 07:12

        因为数值过于巨大,使用int、long肯定是无法存储的,所以只能采用高精度算法,模拟小学生的算术计算。注意输出的细节就好。

package big_number;import java.util.Scanner;/** * A + B Problem II * 大整数之间的加法 * Created by yangyuan on 2017/12/8. */public class Problem1002{    public static void main(String[] args)    {        Scanner scanner = new Scanner(System.in);        int caseCount = scanner.nextInt();        for (int i = 1; i <= caseCount; i++)        {            String aStr = scanner.next();            String bStr = scanner.next();            System.out.println("Case " + i + ":");            System.out.print(aStr + " + " + bStr + " = ");            char[] a = aStr.toCharArray();            char[] b = bStr.toCharArray();            if (a.length >= b.length)                calculate(a, b);            else                calculate(b, a);            if (i < caseCount)                System.out.println();        }    }    public static void calculate(char[] x, char[] y)    {        final char zero = '0';        for (int i = x.length - 1, j = y.length - 1; j >= 0; i--, j--)        {            int a = x[i] - zero;            int b = y[j] - zero;            if (a + b < 10)                x[i] = (char)(a + b + zero);            else            {                x[i] = (char)(a + b - 10 + zero);                if (i - 1 >= 0)                    x[i - 1]++;                else                    System.out.print("1");    //如果进入这里,则打印完最高位就会退出循环            }        }        System.out.println(x);    }}

原创粉丝点击