voidmul(){ for (LL i = 1; i <= lena; i++) for (LL j = 1; j <= lenb; j++) C[i + j - 1] += A[i] * B[j]; // 计算贡献 for (LL i = 1; i <= len; i++) { // 进位 C[i + 1] += C[i] / 10; C[i] %= 10; } while (len > 1 && !C[len]) len--; // 去掉前导零 }
intmain(){ string a, b; cin >> a >> b; lena = a.size(); lenb = b.size(); len = lena + lenb; // 乘积的位数不超过两数的位数之和 for (LL i = 1; i <= lena; i++) A[i] = a[lena - i] - '0'; for (LL i = 1; i <= lenb; i++) B[i] = b[lenb - i] - '0'; mul(); for (LL i = len; i >= 1; i--) printf("%d", C[i]); return0; }