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;
}