uid_310801 @ 2021-10-13 20:26:47
#include<bits/stdc++.h>
using namespace std;
int main(){
unsigned int a,b;
cin>>a>>b;
cout<<a+b;
return 0;
}
此代码可以通过A+B,而题目中明确说明有负数。说明数据强度不够,建议加强数据
by _JY_ @ 2021-10-13 20:28:56
sq...lm?
by uid_310801 @ 2021-10-13 20:32:06
经过实验发现定义int a b然后输出abs(a+b)能ac说明答案都是正数。那么unsigned相加的时候到底会遵循什么样的原则呢?一正一负的unsigned且正数绝对值大于负数的绝对值,那它们相加时为什么可以输出正确的答案呢?
by hjxhjx @ 2021-10-13 20:36:54
输入和相加的时候各溢出一次,然后又变成正确答案了
by NaOH_Frog @ 2021-10-13 20:38:14
并不,原来和是负数的现在会输出正数(
by chaichunyang @ 2021-10-13 20:40:52
没必要吧,a+b不需要在意
by 王熙文 @ 2021-10-13 20:42:42
可是 https://www.luogu.com.cn/record/59776577
不懂
by uid_310801 @ 2021-10-13 20:47:34
@王熙文 是啊,题目数据有负数没错,但是没有a和b都是正数的,而有两个点是有一个正数,有一个负数。
而那个负数的绝对值又比正数的小,所以答案都是正数(或0?)
by _Veritas @ 2021-10-13 20:51:29
数据里存在ab<0的情况,但是不存在a+b<0的情况。
所以@王熙文 的代码会RE。
而输入的a为负数时,变量a中储存的值为
by uid_310801 @ 2021-10-13 20:54:38
@_Veritas 懂了懂了%
by uid_310801 @ 2023-03-27 20:44:37
并不,原来和是负数的现在会输出正数(