Submission
Status:
PPPPPPPPPP
Score: 100
User: kami
Problemset: I.Quick Math
Language: cpp
Time: 0.004 second
Submitted On: 2024-10-13 22:51:58
#include <stdio.h>
#include <string.h>
#define MAX 2000
void mul(char a[], char b[], char res[]){
int len1 = strlen(a);
int len2 = strlen(b);
int tmp[MAX] = {0};
int i, j, carry;
for(i = len1 - 1; i >= 0; i--){
carry = 0;
for(j = len2 - 1; j >= 0; j--){
int mul = (a[i] - '0') * (b[j] - '0') + tmp[i + j + 1] + carry;
carry = mul/10;
tmp[i+j+1] = mul%10;
}
tmp[i+j+1] = carry;
}
i = 0;
while(i < len2 + len1 && tmp[i] == 0){
i++;
}
int index = 0;
while(i < len1 + len2){
res[index++] = tmp[i++] + '0';
}
res[index] = '\0';
if(index == 0) strcpy(res, "0");
}
int main(){
char A[MAX], B[MAX], res[MAX * 2] = {0};
scanf("%s %s",A,B);
mul(A,B, res);
printf("%s\n",res);
return 0;
}