ADV-353 高精度乘法
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
#define LENGTH 1000
int main(){
char a1[LENGTH],b1[LENGTH];
int a[LENGTH],b[LENGTH],c[LENGTH];
int lena,lenb,lenc,i,j,x;
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));
memset(c,0,sizeof(c));
scanf("%s", a1);
scanf("%s", b1);
lena = int(strlen(a1));
lenb = int(strlen(b1));
for (i = 0;i < lena;i++){
a[lena - i - 1] = a1[i] - 48;
}
for (i = 0;i < lenb; i++){
b[lenb - i - 1] = b1[i] - 48;
}
for (i = 0; i < lena; i++){
x = 0;
for (j = 0; j < lenb; j++){
c[i + j] = a[i] * b[j] + x + c[i + j];
x = c[i + j] / 10;
c[i + j] %= 10;
}
c[lenb + i] = x;
}
lenc = lena + lenb;
while (c[lenc] == 0 && lenc > 0){
lenc--;
}
for (i = lenc; i >= 0; i--){
cout<<c[i];
}
return 0;
}