Submission

Status:
PPPPPPPPPP

Score: 100

User: real_MYdkn_not_fake_100

Problemset: I.Quick Math

Language: c

Time: 0.004 second

Submitted On: 2024-10-14 11:50:28

#include <stdio.h>
#include <string.h>
char mem[10][1005];
char out[2005];
int main(){
    char a[1005],b[1005];
    scanf("%s %s",a,b);
    int a_len = strlen(a);
    int b_len = strlen(b);
    for(int i=0;i<=9;++i){
        // 0-9 * b
        int last=0;
        int idx=0;
        for(int j=b_len-1;j>=-1;--j){
            int calculated=0;
            if(j!=-1)
                calculated = (b[j]-'0')*i;
            mem[i][idx++] = (calculated+last)%10;
            last = (calculated+last)/10;
            // printf("%d ",last);
        }
        // for(int j=idx-1;j>=0;--j)
        //     printf("%d",mem[i][j]);
        // printf("\n");
    }
    int idx;
    for(int i=a_len-1;i>=0;--i){
        int last=0;
        idx=0;
        for(int j=0;j<=b_len;++j){
            // printf("%3d",mem[(int)a[i]-'0'][j]);
            // printf("%d ",idx-i+a_len-1);
            int calculated = out[idx-i+a_len-1]+mem[(int)a[i]-'0'][j];
            out[idx-i+a_len-1] = (calculated+last)%10;
            last = (calculated+last)/10;
            ++idx;
        }
        // printf("\n");
        // for(int j=idx-i+a_len-1;j>=0;--j)
        //     printf("%c",out[j]+'0');
        // printf("\n");
    }
    int first_time=1;
    for(int j=idx+a_len-1;j>=0;--j){
        if(first_time&&out[j]==0)continue;
        first_time=0;
        printf("%c",out[j]+'0');
    }

    if(first_time)printf("0");

    return 0;
}