C++80分求助

P1303 A*B Problem

Dr_Ikun @ 2022-08-31 12:09:27

#include<bits/stdc++.h>
using namespace std;
int ai[2001],bi[2001],c[4005];
int main()
{
    int ma=0,g=1;
    string a,b;
    cin>>a>>b;
    for(int i=a.size()-1;i>=0;i--)
    {
        ai[g]=a[i]-'0';
        g++;
    }
    g=1;
    for(int i=b.size()-1;i>=0;i--)
    {
        bi[g]=b[i]-'0';
        g++;
    }
    for(int i=1;i<=a.size();i++)
    {
        for(int j=1;j<=b.size();j++)
        {
            int k=ai[i]*bi[j],l=i+j-1;
            do
            {
                c[l]=c[l]+k%10;
                k=(k-k%10)/10+c[l]/10;
                c[l]=c[l]%10;
                l++;
            }while(k>0);
            if(ma<l) ma=l-1;
        }
    }
    for(int i=ma;i>=1;i--)
    {
        cout<<c[i];
    }

    return 0;
}

by IDNo1 @ 2022-08-31 12:21:47

@cmddd

数组开小了


by IDNo1 @ 2022-08-31 12:22:16

AC 代码

#include<bits/stdc++.h>
using namespace std;
int ai[20001],bi[20001],c[40005];
int ma, g = 1;
string a, b;
int main()
{

    cin >> a >> b;
    if (a == "0" || b == "0") {
        cout << "0";
        return 0;
    }
    for(int i=a.size()-1; i>=0; i--) {
        ai[g] = a[i] - '0';
        g++;
    }
    g = 1;
    for(int i=b.size()-1; i>=0; i--) {
        bi[g] = b[i] - '0';
        g++;
    }
    for(int i=1; i<=a.size(); i++) {
        for(int j=1; j<=b.size(); j++) {
            int k=ai[i]*bi[j],l=i+j-1;
            do {
                c[l]=c[l]+k%10,k=(k-k%10)/10+c[l]/10,c[l]=c[l]%10,l++;
            } while(k>0);
            if(ma<l) ma=l-1;
        }
    }
    for(int i=ma; i>=1; i--) {
        cout << c[i];
    }
    return 0;
}

by Dr_Ikun @ 2022-08-31 12:26:01

@IDNo1 AC了,谢谢大佬


|