问题标题: 酷町堂:1096 a+b

0
0
已解决
许嘉耀
许嘉耀
新手守护
新手守护

#include <iostream>
#include <cstring>
using namespace std;
int n;
int a[10005];
int b[10005];
int c[10005];
string t1,t2;
string jf(string x,string y){
    a[0]=x.size();
    b[0]=y.size();
    for(int i=1;i<=a[0];i++){
        a[i]=x[a[0]-i]-'0';
    }
    for(int i=1;i<=b[0];i++){
        b[i]=y[b[0]-i]-'0';
    }    
    c[0]=max(a[0],b[0]);
    int jw=0;
    for(int i=1;i<=c[0];i++){
        c[i]=(a[i]+b[i]+jw)%10;
        jw=(a[i]+b[i]+jw)/10;    
    }
    if(jw){
        c[0]++;
        c[c[0]]=jw;
    }
    string ans="";
    for(int i=c[0];i>=1;i--){
        ans+=char(c[i]+'0');
    }
    return ans;
}
int main(){
    cin>>n;
    for(int i=1;i<=n;i++){
        cin>>t1>>t2;
        cout<<jf(t1,t2)<<endl; 
    }
    return 0;
}

许嘉耀在2022-07-13 16:11:17追加了内容

#include <iostream>

using namespace std;

string s,p;

int a[100005];

int b[100005];

int c[100005];

int main(){

    int n;

    cin>>n;

    for(int j=1;j<=n;j++){

        cin>>s>>p;

        a[0]=s.size();

        b[0]=p.size();

        for(int i=1;i<=a[0];i++){

            a[i]=s[a[0]-i]-'0';

        }

        for(int i=1;i<=b[0];i++){

            b[i]=p[b[0]-i]-'0';

        }   

        c[0]=max(a[0],b[0]);

        int jw=0;

        for(int i=1;i<=c[0];i++){

            c[i]=(a[i]+b[i]+jw)%10;

            jw=(a[i]+b[i]+jw)/10;   

        }

        if(jw){

            c[0]++;

            c[c[0]]=jw;

        }

        for(int i=c[0];i>=1;i--){

            cout<<c[i];

        }       

cout<<endl;

    }

    return 0;

}

0分


0
已采纳
贾一凡
贾一凡
中级光能
中级光能

你把第一个代码中的数组开大:100005

保险起见,在函数中将a,b,c数组置零

0
崔子周
崔子周
高级天翼
高级天翼

高精度,把数组弄大一点,这样保险,数组初值都位0

0
甄子烨
甄子烨
高级光能
高级光能

emmm...

这不高精吗?

这不高加模板吗?

很水的啊(前提是你学过)

0
王旭杰
王旭杰
高级光能
高级光能

加的时候最好用函数写

函数中数组要清零

0
贾一凡
贾一凡
中级光能
中级光能

其他没问题,和我写的代码一样

我要回答