help!!

P1303 A*B Problem

陈知易 @ 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;
}

那你看看这个程序和你的有什么区别,这是满分程序。


|