
(^ _^)
高精度乘法(自留)
(高精度加在上篇,感兴趣请移步查看)
#include <iostream>
#include <cstring>
#define mem 10001
using namespace std;
int main() {
int a[mem] = { 0 }, b[mem] = { 0 }, c[mem] = { 0 }; // 初始化数组为 0
int i, j, len;
string a1, b1;
cin >> a1 >> b1;
a[0] = a1.size();
b[0] = b1.size();
// 将字符串转换为数字数组
for (i = 1; i <= a[0]; i++) {
a[i] = a1[a[0] - i] - '0'; // 从后往前存储数字
}
for (i = 1; i <= b[0]; i++) {
b[i] = b1[b[0] - i] - '0';
}
len = a[0] + b[0];
for (i = 1; i <= a[0]; i++) {
for (j = 1; j <= b[0]; j++) {
c[i + j - 1] += a[i] * b[j];
}
}
for (i = 1; i < len; i++) { ///对进位的处理
if (c[i] > 9) {
c[i + 1] += c[i] / 10;
c[i] %= 10;
}
}
//删除前导0
while (c[len] == 0 && len > 1) len--;
for (i = len; i >= 1; i--) {
cout << c[i];
}
return 0;
}
276

被折叠的 条评论
为什么被折叠?



