问题标题: 酷町堂1793高精度加法怎么做?(0分)

1
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;
}

各位大佬,请帮助我一下。

http://judge.codingtang.com/problem/1793/


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
我要回答