洛谷原题: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和自己的思路:
你所提供的代码看起来没有问题,但是可能存在一些隐藏的问题。根据你所提供的信息,我建议你尝试以下几个步骤来解决你的问题:
检查题目要求是否有误;
检查代码逻辑是否正确,特别是在处理进位的情况下;
检查输入输出是否符合题目要求;
检查代码是否存在数组越界的情况;
尝试调试代码,找出错误。
希望我的回答能够对你有所帮助。如果你有其他问题或需要进一步的解释,请随时联系我。