C++高精度算法(加法)

洛谷原题:https://www.luogu.com.cn/problem/P1601
高精度加法,样例都能过,但是全部都WA了(下载了第一个数据点,in:123 123,out:246,明明也能正常输出246但还是WA)
有点让我摸不着头脑

#include
#include
#include
using namespace std;

int main(){
    char a[502],b[502];
    int aa[502],bb[502],c[503],lena,lenb,lenc,x=0;
    memset(c,0,sizeof(c));
    gets(a);gets(b);
    lena=strlen(a);lenb=strlen(b);
    for(int i=0;i-1]-48;    
    for(int i=0;i-1]-48;
    lenc=0;
    while(lenc10;
        c[lenc]=c[lenc]%10;
        lenc++;
    }
    if(x==1)cout<for(int i=lenc-1;i>=0;i--)cout<return 0;
}

参考GPT和自己的思路:

首先,这个问题的代码实现本身没有太大的问题,细节方面稍微需要注意一下,但是在传统的语言环境(如 Visual Studio)下可以正常运行。

但是在洛谷这样的 OJ 平台上,输入的格式和实现有一些要求。在本题中,输入格式要求两个数之间有一个空格,所以在读入字符串之后,需要用 strtok 函数将两个字符串分开,再转化为整数数组。同时,注意 C++ 中 gets 函数不是很安全,最好使用 std::getline。

修改后的代码如下:

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;

int main(){
    char a[502],b[502];
    int aa[502],bb[502],c[503],lena,lenb,lenc,x=0;
    memset(c,0,sizeof(c));
    std::getline(cin,a);
    std::getline(cin,b);
    lena=strlen(a);lenb=strlen(b);
    char *p=strtok(a," ");
    int i=0;
    while(p!=NULL){
        aa[i++]=p[0]-'0';
        p=strtok(NULL," ");
    }
    p=strtok(b," ");
    i=0;
    while(p!=NULL){
        bb[i++]=p[0]-'0';
        p=strtok(NULL," ");
    }
    lenc=0;
    while(lenc<lena||lenc<lenb){
        c[lenc]=aa[lenc]+bb[lenc]+x;
        x=c[lenc]/10;
        c[lenc]=c[lenc]%10;
        lenc++;
    }
    if(x==1)cout<<x;
    for(int i=lenc-1;i>=0;i--)cout<<c[i];
    return 0;
}

希望能够解决你的问题!

参考GPT和自己的思路:

你所提供的代码看起来没有问题,但是可能存在一些隐藏的问题。根据你所提供的信息,我建议你尝试以下几个步骤来解决你的问题:

  1. 检查题目要求是否有误;

  2. 检查代码逻辑是否正确,特别是在处理进位的情况下;

  3. 检查输入输出是否符合题目要求;

  4. 检查代码是否存在数组越界的情况;

  5. 尝试调试代码,找出错误。

希望我的回答能够对你有所帮助。如果你有其他问题或需要进一步的解释,请随时联系我。