60分求助,哪里没考虑到?
查看原帖
60分求助,哪里没考虑到?
1445261
Wang_Neil楼主2024/9/11 13:39

#```cpp #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:39
加载中...