#include using namespace std; const int N = 1e5 + 10; const int WIDTH = 4; // 压4位 const int BASE = 10000; // 基数为10000 int a[N], al; int b[N], bl; // 字符串转压位数组(逆序存储) void str2num(string s, int c[], int &cl) { cl = 0; for (int i = s.size() - 1; i >= 0; i -= WIDTH) { int v = 0; int st = max(i - WIDTH + 1, 0); // 最后一组可能不够4个长度 for (int j = st; j <= i; j++) v = v * 10 + (s[j] - '0'); c[cl++] = v; } } void mul(int a[], int &al, int b[], int &bl) { vector c(N, 0); for (int i = 0; i < al; i++) for (int j = 0; j < bl; j++) c[i + j] += a[i] * b[j]; al = al + bl + 1; for (int i = 0; i < al; i++) { c[i + 1] += c[i] / BASE; c[i] %= BASE; } for (int i = 0; i < al; i++) a[i] = c[i]; while (al > 1 && a[al - 1] == 0) al--; } int main() { string x, y; cin >> x >> y; str2num(x, a, al), str2num(y, b, bl); mul(a, al, b, bl); for (int i = al - 1; i >= 0; i--) printf("%d", a[i]); return 0; }