陈知易 @ 2017-04-13 19:37:11
#include<iostream>
#include<cstring>
#include<cmath>
#define k 1000
using namespace std;
int a[k],b[k],c[k],i,j,x,lena,lenb,lenc;
char al[k],bl[k];
int main()
{
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));
memset(c,0,sizeof(c));
cin>>al;cin>>bl;
lena=strlen(al);lenb=strlen(bl);
for(i=0;i<=lena-1;i++){a[lena-i]=al[i]-48;}
for(i=0;i<=lenb-1;i++){b[lenb-i]=bl[i]-48;}
for(i=1;i<=lena;i++)
{x=0;
for(j=1;j<=lenb;j++)
{
c[i+j-1]=a[i]*b[j]+x+c[i+j-1];
x=c[i+j-1]/10;
c[i+j-1]%=10;
}
c[i+lenb]=x;
}
lenc=lena+lenb;
while(c[lenc]==0&&lenc>1){lenc--;}
for(i=lenc;i>=1;i--){cout<<c[i];}
return 0;
}
by 沐汐神话 @ 2017-05-05 18:16:04
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
const int maxn=2000+1000;
char s1[maxn],s2[maxn];
int a[maxn],b[maxn],c[maxn*maxn];
int main()
{
scanf("%s%s",s1,s2);
int lena=strlen(s1),lenb=strlen(s2);
for(int i=0;i<lena;i++) a[i]=s1[lena-i-1]-'0';
for(int i=0;i<lenb;i++) b[i]=s2[lenb-i-1]-'0';
for(int i=0;i<lena;i++)
for(int j=0;j<lenb;j++) {
c[i+j]+=a[i]*b[j];
c[i+j+1]+=c[i+j]/10;
c[i+j]%=10;
}
int lenc=lena+lenb;
while(lenc>1&&c[lenc-1]==0) lenc--;
for(int i=lenc-1;i>=0;i--) printf("%d",c[i]);
return 0;
}
那你看看这个程序和你的有什么区别,这是满分程序。