40分求助!

P1303 A*B Problem

nbdog @ 2024-08-14 17:38:25

代码

求大佬在源代码上


by damno @ 2024-08-15 16:00:58

来了 ........ 姗姗来迟...

#include<iostream>
#include<cstring>
using namespace std;
long long a[10005],b[10005],c[10005],i,j,t,x;
char a1[10005],b1[10005];
int main()
{
    cin>>a1>>b1;
    if(a1[0]=='0'||b1[0]==0) {cout<<0<<endl;return 0;}
    long long lena=strlen(a1);
    long long lenb=strlen(b1);
    for(i=0,j=lena-1;i<=lena-1,j>=0;i++,j--)
    {
        a[i]=a1[j]-'0';
    }
    for(i=0,j=lenb-1;i<=lenb-1,j>=0;i++,j--)
    {
        b[i]=b1[j]-'0';
    }
    for(i=0;i<lena;i++)
    {
        for(j=0;j<lenb;j++)
        {
            c[i+j]+=a[i]*b[j];
        }
    }
    for(i=0;i<=10000;i++)
    {
        if(c[i]>=10) c[i+1]+=c[i]/10,c[i]=c[i]%10;
    }
    i=10001;
    while(c[i]==0) i--;
    for(;i>=0;i--) cout<<c[i];
    return 0;
}

by 3_145 @ 2024-08-18 15:39:41

正确代码



#include<bits/stdc++.h>
using namespace std;
char e[2010],d[2010];int a[2010],b[2000+10],c[4000+20],t,g;
int main()
{
    int ans;//长度 
    cin>>e>>d;
    t=strlen(e);
    g=strlen(d);
    for(int i=0;i<t;i++)
    {
        a[i]=e[t-i-1]-'0';
    }
    for(int i=0;i<g;i++)
    {
        b[i]=d[g-i-1]-'0';
    }  

    for(int i=0;i<t;i++)
    {
        for(int j=0;j<g;j++)
        {
            c[i+j]+=a[i]*b[j];
        }

    }
    ans=t+g;
    for(int i=0;i<ans;i++)
    {
        c[i+1]+=c[i]/10;
        c[i]=c[i]%10;
    }
    for(;ans>=2 && !c[ans-1];)
    {
        ans--;
    }
    for(int i=ans-1;i>=0;i--)
    {
        cout<<c[i];
    }
    return 0;
}
 `

上一页 |