关于1+1等于一个上千位的数

P1601 A+B Problem(高精)

@[Dcchen](/user/1012241) 所以呢
by so_find_skind @ 2023-08-27 21:05:40


@[Dcchen](/user/1012241) 有三个错误
by ShieHere @ 2023-08-27 21:11:01


@[Dcchen](/user/1012241) 第一个是最开始的两个 for 内的 j 应该从 $0$ 开始枚举。
by ShieHere @ 2023-08-27 21:11:50


@[Dcchen](/user/1012241) 第二个是最后一个 if 的 len+1 应该改为 len。
by ShieHere @ 2023-08-27 21:12:38


@[Dcchen](/user/1012241) 第三个是最后一个 for 内的 i++ 改为 i--。
by ShieHere @ 2023-08-27 21:13:15


@[Dcchen](/user/1012241) 改完后代码: ```cpp #include<string.h> #include<algorithm> #include<iostream> #define maxn 5010 using namespace std; int a[maxn],b[maxn],c[maxn]; int main(){ string x,y; cin>>x>>y; int len=max(x.size(),y.size()); for(int i=x.size()-1,j=0;i>=0;i--,j++)//这里的 j 从 0 开始枚举 a[j]=x[i]-'0'; for(int i=y.size()-1,j=0;i>=0;i--,j++)//这里同理 b[j]=y[i]-'0'; for(int i=0;i<len;i++){ c[i]+=a[i]+b[i]; c[i+1]=c[i]/10; c[i]%=10; } if(c[len])//这里的 len 是不用 +1 的 len++; for(int i=len-1;i>=0;i--)//这里 i 是递减的,所以 i-- cout<<c[i]; } ```
by ShieHere @ 2023-08-27 21:18:21


其实只用改第三个问题就可以了。 感谢!!!
by Dcchen @ 2023-08-28 08:11:18


错误的,$1+1=51$。纯属整活。 使用上面的改完后代码。 输入: ```plain 1+1 1+1 ``` 他输出了: ```plain 102 ``` 设 $1+1=x$。 $$x+x=102$$ 解得 $$x=51$$ 故 $1+1=51$。
by denominator @ 2023-08-29 12:56:42


|