public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in);
while (sc.hasNext()) { String a = sc.next(); String b = sc.next(); // 翻转字符串 a = new StringBuffer(a).reverse().toString(); b = new StringBuffer(b).reverse().toString();
int[] c = new int[a.length() + b.length()]; // 开始构建模拟乘法的数组了c1,c2,..... for (int i = 0; i < a.length(); i++) { // ai为其中一个乘数某一位的数值 int ai = a.charAt(i) - '0'; for (int j = 0; j < b.length(); j++) { int bj = b.charAt(j) - '0'; // bj为其中一个乘数某一位的数值 // // 这一步详细看上面思路,模拟乘法的一个方案 c[i + j] += ai * bj; } } // 对半成品数组进行一个进位操作 for (int i = 0; i < c.length - 1; i++) { int jinwei = c[i] / 10; c[i] = c[i] % 10; c[i + 1] += jinwei; } // 倒着打印表,值得学习这种写法 int pos = c.length; // 定义pos指针 // 找到啥时候开始不是0的,也就是说最高的一位绝不可能是0 while (c[--pos] == 0) ; while (pos >= 0) System.out.print(c[pos--]); } } }