1 #include<iostream>
2 #include<cstdio>
3 #include<cmath>
4 #include<cstring>
5 #include<vector>
6 #include<algorithm>
7 using namespace std;
8 #define MAXN 550000+100
9 #define PI 3.14159265358
10 #define EPS 1e-2
11 char a[MAXN],b[MAXN];
12 int n,m,top=0,label=0;
13 int ans[MAXN];
14 struct complex
15 {
16 double R,I;
17 complex(){}
18 complex(double r0,double i0): R(r0),I(i0) {}
19 };
20 complex operator *(const complex& A,const complex &B)
21 {
22 return complex(A.R*B.R-A.I*B.I,A.R*B.I+B.R*A.I);
23 }
24 complex operator +(const complex& A,const complex &B)
25 {
26 return complex(A.R+B.R,A.I+B.I);
27 }
28 complex operator -(const complex& A,const complex &B)
29 {
30 return complex(A.R-B.R,A.I-B.I);
31 }
32 vector<complex> C[3*MAXN];
33 complex p[MAXN];
34 int FFT(int first,int floor,int multi)
35 {
36 int i;
37 if(n==floor)
38 {
39 C[++top].push_back(p[first]);
40 return top;
41 }
42 complex wn=complex(cos(2*PI/n*floor),sin(2*PI/n*floor)*multi);
43 complex w=complex(1,0);
44 label++;
45 int top0=FFT(first,floor*2,multi);
46 int top1=FFT(first+floor,floor*2,multi);
47 top++;
48 for(i=0;i<n/floor/2;i++,w=w*wn)
49 C[top].push_back(C[top0][i]+w*C[top1][i]);
50
51 w=complex(1,0);
52 for(i=0;i<n/floor/2;i++,w=w*wn)
53 C[top].push_back(C[top0][i]-w*C[top1][i]);
54 return top;
55 }
56 int make_int(double x)
57 {
58 int A=x;
59 if (fabs(x-A)<EPS)
60 return A;
61 return A+1;
62 }
63 void solve()
64 {
65 int i=1;
66 for(i=0;i<n;i++)
67 p[i].R=a[n-i-1]-48;
68 while(i<n) i*=2;
69 n=i*2;
70
71 i=1;
72 while(i<m) i*=2;
73 n=max(i*2,n);
74
75 int top0=FFT(0,1,1);
76
77 memset(p,0,sizeof(p));
78 for(i=0;i<m;i++)
79 p[i].R=b[m-i-1]-48;
80 int top1=FFT(0,1,1);
81
82 memset(p,0,sizeof(p));
83 for(i=0;i<n;i++)
84 p[i]=C[top0][i]*C[top1][i];
85 int top2=FFT(0,1,-1);
86
87 for(i=0;i<n;i++)
88 {
89 ans[i]+=make_int(C[top2][i].R/n);
90 ans[i+1]=ans[i]/10;
91 ans[i]=ans[i]%10;
92 }
93
94 for(i=n-1;i>=0;i--) if(ans[i]!=0) break;
95 for(i;i>=0;i--) printf("%d",ans[i]);
96 printf("\n");
97 }
98
99 int main()
100 {
101 int i;
102 scanf("%s%s",a,b);
103 n=strlen(a); m=strlen(b);
104 solve();
105 }
106