20分代码:
#include<iostream>
#include<cstring>
using namespace std;
const int N=5010;
char al[N],bl[N];
int a[N],b[N],c[N*2];
int main()
{
cin>>al>>bl;
int la,lb;
la=strlen(al),lb=strlen(bl);
int x=0;
for(int i=0;i<la;++i)
{
a[la-i]=al[i]-'0';
}
for(int i=0;i<lb;++i)
{
b[lb-i]=bl[i]-'0';
}
int lc=la+lb;
for(int i=1;i<=la;++i)
{
for(int j=1;j<=lb;++j)
{
c[i+j-1]+=a[i]*b[j]+x;
x=c[i+j-1]/10;
c[i+j-1]=c[i+j-1]%10;
}
c[i+lb]+=x;
}
while(c[lc]==0&&lc>1) lc--;
for(int i=lc;i>=1;--i) cout<<c[i];
return 0;
}
AC代码
#include<iostream>
#include<cstring>
using namespace std;
const int N=5010;
char al[N],bl[N];
int a[N],b[N],c[N*2];
int main()
{
cin>>al>>bl;
int la,lb;
la=strlen(al),lb=strlen(bl);
for(int i=0;i<la;++i)
{
a[la-i]=al[i]-'0';
}
for(int i=0;i<lb;++i)
{
b[lb-i]=bl[i]-'0';
}
int lc=la+lb;
for(int i=1;i<=la;++i)
{
int x=0;
for(int j=1;j<=lb;++j)
{
c[i+j-1]+=a[i]*b[j]+x;
x=c[i+j-1]/10;
c[i+j-1]=c[i+j-1]%10;
}
c[i+lb]+=x;
}
while(c[lc]==0&&lc>1) lc--;
for(int i=lc;i>=1;--i) cout<<c[i];
return 0;
}