今天做了个有毒的题,明明很简单,数据就是过不了,找了半天都找不到原因,请教学长,连多组输入的问题都考虑了?,心底一片郁闷。最过分的是,AC的代码与我之前提交的代码并没有本质上的区别。
输入两个int范围内的整数a和b,
你需要判断如果a和b都是用int类型存储的,a+b在C++中是否越界了(也就是结果是否还在int范围内)。
注意越界有上界和下界。
下面分别是未AC的与AC了的,大家帮忙看看区别啊?。
未AC:
#include<iostream>
using namespace std;
int main()
{
long long a,b;
long long c;
cin>>a>>b;
c=a+b;
if(c>=-2147483648&&c<=2147483647)
cout<<"No"<<endl;
else
cout<<"Yes"<<endl;
return 0;
}
#include<iostream>
using namespace std;
int main()
{
long long int a,b,c;
cin>>a>>b;
c=a+b;
if(c+1<-2147483647||c>2147483647)
cout<<"Yes"<<endl;
else
cout<<"No"<<endl;
return 0;
}
AC:
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
using namespace std;
int main()
{
long long int a,b,c;
cin>>a>>b;
c=a+b;
if(c+1<-2147483647||c>2147483647)
cout<<"Yes"<<endl;
else
cout<<"No"<<endl;
return 0;
}