#include<iostream>
using namespace std;
#define MAX 1000000
int a[MAX], b[MAX], c[MAX];
void multiply(string A, string B) {
int flag = 0;
if (A[0] == '-' && b[0] != '-') {
flag++;
A = A.substr(1);
}
if (A[0] != '-' && B[0] == '-') {
flag++;
B = B.substr(1);
}
int LA = A.size(), LB = B.size();
memset(a, 0, sizeof(a));
memset(b, 0, sizeof(b));
memset(c, 0, sizeof(c));
for (int i = 0; i < LA; ++i) a[i] = A[LA - 1 - i] - '0';
for (int i = 0; i < LB; ++i) b[i] = B[LA - 1 - i] - '0';
for (int i = 0; i < LB; ++i)
for (int j = 0; j < LA; ++j)
c[i + j] += b[i] * a[j];
for (int i = 0; i < LA + LB; ++i)
if (c[i] >= 10) {
c[i + 1] += c[i] / 10;
c[i] %= 10;
}
int i = LA + LB;
while (c[i] == 0)
--i;
if (flag == 1)
cout << '-';
if (i < 0)
cout << 0;
else
for (; i >= 0; --i)
cout << c[i];
}
int main() {
string A, B;
cin >> A >> B;
multiply(A, B);
return 0;
}
大数乘法
最新推荐文章于 2024-08-29 20:40:47 发布