40分求助

P1601 A+B Problem(高精)

@[S_Z_Xcoco](/user/918508) 没有进位
by xiaoxiaoyyds @ 2023-08-24 18:32:32


@[S_Z_Xcoco](/user/918508) 供参考 ``` #include <cstring> #include <iostream> using namespace std; int main(){ char s1[1145],s2[1145]; scanf("%s %s",s1,s2); int a[1145]={0},b[1145]={0},c[1145]={0}; int len1 = strlen(s1); int len2 = strlen(s2); int len3 = max(len1,len2); for(int i=0;i<=len1-1;i++)a[i] = s1[len1-1-i]-'0'; for(int i=0;i<=len2-1;i++)b[i] = s2[len2-1-i]-'0'; int jin = 0; for(int i = 0; i <= len3 - 1; i++){ c[i] = a[i] + b[i] + jin; if(c[i] > 9){ jin = 1; c[i]-=10; }else jin = 0; } if(jin==1)cout << 1; for(int i = len3 - 1; i >= 0; i--)cout << c[i]; } ```
by luogu10086 @ 2023-08-24 18:32:58


@[xiaoxiaoyyds](/user/793036) 进位了。 ![](https://cdn.luogu.com.cn/upload/image_hosting/ia7ryl99.png?x-oss-process=image/resize,m_lfit,h_9999,w_9999)
by S_Z_Xcoco @ 2023-08-24 18:35:46


@[S_Z_Xcoco](/user/918508) 输入 1: ```plain 15 5 ``` 输入 2: ```plain 1 99 ``` 输出显然。 你的结果分别为 `90` 和 `10`。 修改方式:将第 26 行修改为 `c[i]+=a[i]+b[i];`。 原因:代码没有考虑下一位非零的情况。
by gtafics @ 2023-08-24 18:37:28


@[gtafics](/user/834670) 谢谢,本帖结
by S_Z_Xcoco @ 2023-08-24 18:40:43


@[gtafics](/user/834670) 不好意思,我把输出打反了。
by gtafics @ 2023-08-24 18:41:27


|