x
//一般方法
char s1[1005], s2[1005];
int n1[1005], n2[1005], ans[2005];
int main() {
scanf("%s", s1);
scanf("%s", s2);
n1[0] = strlen(s1), n2[0] = strlen(s2);
for (int i = 0, j = n1[0]; s1[i] && j; j--, i++) n1[j] = s1[i] - '0';//倒序存储
for (int i = 0, j = n2[0]; s2[i] && j; j--, i++) n2[j] = s2[i] - '0';//倒序存储
ans[0] = n1[0] + n2[0] - 1; //估计答案最短长度
for (int i = 1; i <= n1[0]; i++) { // 乘法
for (int j = 1; j <= n2[0]; j++) {
ans[i + j - 1] += n1[i] * n2[j];
}
}
for (int i = 1; i <= ans[0]; i++) { //进位
if (ans[i] > 9) {
ans[i + 1] += ans[i] / 10;
ans[i] %= 10;
if (i == ans[0]) {
++ans[0];
}
}
}
for (int i = ans[0]; i; i--) printf("%d", ans[i]); //答案倒序输出
return 0;
}
海贼oj471 |