60分求助,不知道哪里没考虑到
查看原帖
60分求助,不知道哪里没考虑到
1445261
Wang_Neil楼主2024/9/11 13:42
#include<bits/stdc++.h>
using namespace std;
string add(string a,string b)
{
    string c;
    int d=0,lena,lenb,x,y;
    lena=a.length();
    lenb=b.length();
    if (lena > lenb)
    {
        for (int i = 1;i<=lena-lenb;i++)
        {
            b='0'+b;
        }
    }

    else if (lenb > lena)
    {
        for (int i = 1;i<=lenb-lena;i++)
        {
            a='0'+a;

        }
    }
    lenb=b.length();
    lena=a.length();
    for (int i=lena-1;i>=0;i--)
    {
        x=int(a[i]-'0');
        y=int(b[i]-'0');
        if (x+y+d >= 10)
        {
            c=char(x+y+d-10+'0')+c;
            d=1;
        }
        else
        {
            c=char(x+y+d+'0')+c;
            d=0;
        }
    }
    if (d==1){c='1'+c;}
    return c;
}

int main()
{
    string a,b,c;//f存储每一次乘法后的个位数
    int lena,lenb,x,y,d=0,e;//d储存进位数,e暂时存储乘法值
    cin>>a>>b;
    lena=a.length();
    lenb=b.length();
    for (int i=lenb-1;i>=0;i--)
    {
        string f="\0";
        x=int(b[i]-'0');
        for (int j=lena-1;j>=0;j--)
        {
            y=int(a[j]-'0');
            if (x==0 || y==0)
            {
                f="0";
            }
            e=x*y+d;
            if(e<10)
            {
                d=0;
                f=char(e+'0')+f;
            }
            else if (e>=10 && e<20)
            {
                d=1;
                f=char(e-10+'0')+f;
            }
            else if (e>=20 && e<30)
            {
                d=2;
                f=char(e-20+'0')+f;
            }
            else if (e>=30 && e<40)
            {
                d=3;
                f=char(e-30+'0')+f;
            }
            else if (e>=40 && e<50)
            {
                d=4;
                f=char(e-40+'0')+f;
            }
            else if (e>=50 && e<60)
            {
                d=5;
                f=char(e-50+'0')+f;
            }
            else if (e>=60 && e<70)
            {
                d=6;
                f=char(e-60+'0')+f;
            }
            else if (e>=70 && e<80)
            {
                d=7;
                f=char(e-70+'0')+f;
            }
            else if (e>=80 && e<90)
            {
                d=8;
                f=char(e-80+'0')+f;
            }
        }
        if (d!=0)
        {
            f=char(d+'0')+f;
            d=0;
        }
        int i1=lenb-i-1;
        while(i1>0)
        {
            i1--;
            f=f+'0';
        }
        c=add(c,f);
    }
    if (a=="0" || b=="0"){c="0";}
    cout<<c;
    return 0;
}

2024/9/11 13:42
加载中...