//package cn.practice.niuke; import java.util.Scanner; /** * 大数相乘。 * 给出的数据均是合法的,但仍建议您对输入的字符串进行合法性校验 * 远远超出 longest. */ public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); String s1 = scanner.next(); String s2 = scanner.next(); // 先不做校验。 int sumLen = s1.length() + s2.length(); int[] res = new int[sumLen]; for(int i = 0; i< s1.length(); i++) {123*456 int num1 = s1.charAt(s1.length() -1 - i ) - '0';//3 for(int j = 0; j< s2.length(); j++) { int num2 = s2.charAt(s2.length() -1 - j) - '0';//6,5,4 res[i +j ] += num1 * num2; //序列和相同相加 } } for(int i = 0; i< res.length - 1; i++) { if(res[i] >= 10) { res[i+1] += res[i] / 10;//后位加上 res[i] %= 10;//余数 } } int i = res.length -1; for(; i> 0 && res[i] == 0; i--) {} // 去除结果前面的 0 StringBuilder sb = new StringBuilder(); for(; i>=0; i--) { sb.append(res[i]); } System.out.println(sb.toString()); } }