校招笔试题之大整数相乘

题目描述

有两个用字符串表示的非常大的大整数,算出他们的乘积,也是用字符串表示。不能用系统自带的大整数类型。

输入描述:

空格分隔的两个字符串,代表输入的两个大整数

输出描述:

输入的乘积,用字符串表示

示例1

输入

72106547548473106236 982161082972751393

输出

70820244829634538040848656466105986748

思路:ab*cd 最高位:ac,次高位:ad+bc,最低位:bd,由于不能使用系统自带大整数类型,必须将字符串转为数组,得到每一位的数,然后对应位做乘积,最后进行进位操作。

import java.util.Scanner;

public class Pinduoduo02 {
    public static void main(String args[]){
        Scanner in = new Scanner(System.in);
        String line = in.nextLine();
//        String line = "11 11";
        String[] input = line.split(" ");
        char[] str1 = input[0].toCharArray();
        char[] str2 = input[1].toCharArray();
        int[] num1 = new int[str1.length];
        int[] num2 = new int[str2.length];
        int[] result = new int[str1.length + str2.length]; //保留结果

        for (int i=0; i0; i--){ //处理进位
            result[i-1] += result[i]/10;
            result[i] = result[i]%10;
        }

        StringBuilder builder = new StringBuilder();
        for (int i=0; i 
 

你可能感兴趣的:(Java,笔试题)