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