本文共 1942 字,大约阅读时间需要 6 分钟。
为了将两个非常大的大整数用字符串表示相乘并返回结果,我们可以使用字符串模拟大整数相乘的方法。这种方法避免了直接处理大整数可能带来的性能问题,并且适用于非常大的数字。
import java.util.Scanner;public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); String input = scanner.nextLine().trim(); String[] numStrings = input.split(" "); String a = numStrings[0]; String b = numStrings[1]; int m = a.length(); int n = b.length(); int[] result = new int[m + n]; int carry = 0; for (int i = m - 1; i >= 0; i--) { for (int j = n - 1; j >= 0; j--) { int x = a.charAt(i) - '0'; int y = b.charAt(j) - '0'; int sum = x * y + carry; result[i + j] = sum % 10; carry = sum / 10; } } // 处理剩余的进位 int i = 0; int j = 0; while (carry > 0) { int sum = carry; if (i + j < m + n) { result[i + j] = sum % 10; carry = sum / 10; } else { break; } i++; j++; } // 构建结果字符串 StringBuilder sb = new StringBuilder(); for (int k = 0; k < m + n; k++) { sb.append(result[k]); } // 去掉前导零 int start = 0; while (start < m + n && sb.charAt(start) == '0') { start++; } if (start == m + n) { System.out.println("0"); } else { System.out.println(sb.substring(start)); } }}
这种方法确保了我们能够处理非常大的数字,并正确地返回它们的乘积。
转载地址:http://tsvj.baihongyu.com/