1
已解决
#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;
int a[20001],b[20001],c[20001],i,j,lena,lenb,x,lenc;
char al[20001],bl[20001];
int main(){
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));
memset(c,0,sizeof(c));
gets(al); gets(bl);
lena=strlen(al);
lenb=strlen(bl);
for(i=0;i<=lena-1;++i) a[lena-i]=int(al[i]-'0');
for(i=0;i<=lenb-1;++i) b[lenb-i]=int(bl[i]-'0');
x=0;
lenc=1;
while (lenc<=lenb||lenc<=lena){
c[lenc]=a[lenc]+b[lenc]+x;
x=c[lenc]/10;
c[lenc]%=10;
lenc++;
}
c[lenc]=x;
while (c[lenc]==0) lenc--;
for(i=lenc;i>=1;i--) cout<<c[i];
cout<<endl;
return 0;
}
各位大佬,请帮助我一下。
0
已采纳
模拟一遍ok
思路可以看看书。
for(int i=0; i<n1; i++)
a[i+1]=int(s1[n1-i-1])-'0';
cin>>s2;
int n2=s2.size();
for(int i=0; i<n2; i++)
b[i+1]=int(s2[n2-i-1])-'0';
int k=1,x=0;
while(k<=n1||k<=n2)
{
c[k]=a[k]+b[k]+x;
x=c[k]/10;
c[k]%=10;
k++;
}
int n3;
if(x==1)
{
n3=max(n1,n2)+1;
c[n3]=x;
}
else
n3=max(n1,n2);
for(int i=n3; i>=1; i--)
cout<<c[i];
0
string add(string x,string y)
{
if(x.size()<y.size())
swap(x,y);
int lx=x.size(),ly=y.size(),f=0,a,b,s;
while(lx>0)
{
a=x[lx-1]-'0';
if(ly>0)
b=y[ly-1]-'0';
else b=0;
s=a+b+f;
if(s>=10)
{
x[lx-1]='0'+s%10;
f=1;
}
else
{
x[lx-1]='0'+s;
f=0;
}
lx--;
ly--;
}
if(f==1)
x="1"+x;
return x;
}
0
输入改成:
cin>>al>>bl;
int lena = al.length();
int lenb = bl.length();
for(int i = 0;i <= lena - 1;i ++)
a[lena - i] = al[i] - 48;
for(int i = 0;i <= lenb -1;i ++)
b[lenb - i] = bl[i] - 48;
int lenc = 1;
int x = 0;
0
0
0
0
