wa60求调

P1303 A*B Problem

kingho11 @ 2024-07-19 16:12:21

#include<bits/stdc++.h>
using namespace std;
const int N=5005;
long long a[N],b[N],c[N];
void times(string aa,string bb)
{
    for(long long i=0;i<aa.length();i++)
    {
        a[i+1]=aa[i]-'0';
    }
    for(long long i=0;i<bb.length();i++)
    {
        b[i+1]=bb[i]-'0';
    }
    long long lena=aa.length(),lenb=bb.length();
    for(long long j=lena;j>=1;j--)
    {
        for(long long i=lenb;i>=1;i--)
        {
            c[i+j-1]+=a[i]*b[j];
        }
    }
    for(long long i=lena+lenb;i>=1;i--)
    {
        c[i-1]+=c[i]/10;
        c[i]%=10;
    }
    bool flag=false;
    for(long long i=0;i<=lena+lenb-1;i++)
    {
        if(!flag && c[i]==0)
        {
            continue;
        }
        flag=true;
        cout<<c[i];
    }
    if(!flag)
    {
        cout<<0;
    }
}
int main()
{
    string a,b;
    cin>>a>>b;
    times(a,b);
}

by Gfx7894560123 @ 2024-07-20 21:08:02

你想复杂了:

#include<bits/stdc++.h>
using namespace std;
string tim(string a,string b){
    if(a=="0"||b=="0") return "0";
    int l1=a.size(),l2=b.size(),x=0;
    string ans(l1+l2-1,'0');
    for(int i=l1-1;i>=0;i--){
        x=0;
        for(int j=l2-1;j>=0;j--){
            int c1=a[i]-'0',c2=b[j]-'0';
            x+=c1*c2+ans[i+j]-'0';
            ans[i+j]=x%10+'0';
            x/=10;
        }
        if(i) ans[i-1]+=x;
    }
    if(x) ans=to_string(x)+ans;
    return ans;
}
int main()
{   
    cin.tie(nullptr)->sync_with_stdio(0);
    string a,b;
    cin>>a>>b;
    cout<<tim(a,b);
    return 0;
}   

不用太复杂


|