RT,全部RE
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<cmath>
#include<complex>
#define co complex<double>
#define pi acos(-1.0)
using namespace std;
int n,m,limt=1;
char ch[1000200];
co a[1000200];
co b[1000200];
int rev[1000200];
int ans[1000200];
void fft(co *c,int inv)
{
for(int i=0;i<limt;i++)
if(i<rev[i]) swap(c[rev[i]],c[i]);
for(int mid=1;mid<limt;mid*=2)
{
int len=2*mid;
co w(cos(pi/mid),inv*sin(pi/mid));
for(int i=0;i<limt;i+=len)
{
co omega(1,0);
for(int j=0;j<mid;j++)
{
co p1=c[i+j],p2=omega*c[i+j+mid];
c[i+j]=p1+p2;
c[i+j+mid]=p1-p2;
omega*=w;
}
}
}
}
int main()
{
cin>>ch;
n=strlen(ch)-1;
for(int i=0;i<=n;i++)
a[n-i].real()=ch[i]-'0';
cin>>ch;
m=strlen(ch)-1;
for(int i=0;i<=m;i++)
b[m-i].real()=ch[i]-'0';
while(limt<n+m+1)
limt*=2;
for(int i=0;i<limt;i++)
if(i&1)
rev[i]=((rev[i>>1]>>1)+limt/2);
else
rev[i]=(rev[i>>1]>>1);
fft(a,1),fft(b,1);
for(int i=0;i<limt;i++)
a[i]*=b[i];
fft(a,-1);
for(int i=0;i<limt;i++)
{
ans[i]+=(int)(a[i].real()/limt+0.5);
ans[i+1]=ans[i]/10;
ans[i]=ans[i]%10;
}
int tail=limt;
while(ans[tail]==0&&tail>-1)
tail--;
// printf("%d\n",tail);
if(tail<0)
{
printf("0");
return 0;
}
for(int i=tail;i>=0;i--)
printf("%d",ans[i]);
// for(int i=0;i<=n+m;i++)
// printf("%d ",(int)(a[i].real()/limt+0.5));
}