代码:
#include<cstdio>
#include<string>
#include<cstdlib>
#include<iostream>
typedef unsigned long ty;
unsigned long long res[10040]={},a1[5000]={},a2[5000]={};
inline void getst(std::string &s)
{
std::cin>>s;
s=std::string(s.rbegin(),s.rend());
}
int main()
{
freopen("0377.in","r",stdin);
freopen("0377.out","w",stdout);
ty n,e(0);
std::cin>>n;
char ch[10]={};
std::string str;
getst(str);
for(ty i(0),j;i!=n;++e)
{
for(j=0;j!=9&&i!=n;++i,++j)
ch[j]=str[i];
ch[j]=0;
char ls;
for(ty ii(0),fff((j>>1));ii!=fff;++ii)
{
ls=ch[ii];
ch[ii]=ch[j-ii-1];
ch[j-ii-1]=ls;
}
a1[e]=atol(ch);
}
getst(str);
e=0;
for(ty i(0),j;i!=n;++e)
{
for(j=0;j!=9&&i!=n;++i,++j)
ch[j]=str[i];
ch[j]=0;
char ls;
for(ty ii(0),fff((j>>1));ii!=fff;++ii)
{
ls=ch[ii];
ch[ii]=ch[j-ii-1];
ch[j-ii-1]=ls;
}
a2[e]=atol(ch);
}
for(ty i(0);i!=e;++i)
for(ty j(0);j!=e;++j)
res[i+j]+=a1[i]*a2[j];
for(ty i(0),ee((e<<1)+1);i!=ee;++i)//骗分导论曰:放在外面快。。。
if(999999999<res[i])
{
res[i+1]+=res[i]/1000000000;
res[i]%=1000000000;
}
ty ee(e<<1);
for(;ee&&!res[ee];--ee);
if(ee==0)
{
fprintf(stdout,"%I64u\n",res[0]);
return 0;
}
fprintf(stdout,"%I64u",res[ee]);
for(--ee;ee;--ee)
fprintf(stdout,"%09I64u",res[ee]);
fprintf(stdout,"%09I64u\n",res[0]);
return 0;
}