1011. A+B和C (15)
时间限制
50 ms
内存限制
32000 kB
代码长度限制
8000 B
判题程序
Standard
作者
HOU, Qiming
给定区间[-231, 231]内的3个整数A、B和C,请判断A+B是否大于C。
输入格式:
输入第1行给出正整数T(<=10),是测试用例的个数。随后给出T组测试用例,每组占一行,顺序给出A、B和C。整数间以空格分隔。
输出格式:
对每组测试用例,在一行中输出“Case #X: true”如果A+B>C,否则输出“Case #X: false”,其中X是测试用例的编号(从1开始)。
输入样例:4 1 2 3 2 3 4 2147483647 0 2147483646 0 -2147483648 -2147483647输出样例:
Case #1: false Case #2: true Case #3: true Case #4: false
出题点在数的溢出 同号相加溢出
浙大的编译器是64位的linux系统,所以其实只要用 long int 很快就可以搞定了。我的算法,严重怀疑只是碰巧对了,我逻辑没理清楚
#include<iostream>
#include<string>
using namespace std;
int main(){
int a,b,c,n,i=0;
cin>>n;
while(i<n){
cin>>a>>b>>c;
if(a>0&&b>0&&(a+b)>0){
cout<<"Case #"<<i+1<<": true"<<endl;
}else if(a<0&&b<0&&(a+b)<0){
cout<<"Case #"<<i+1<<": false"<<endl;
}else {
if(a+b>c){
cout<<"Case #"<<i+1<<": true"<<endl;
}else{
cout<<"Case #"<<i+1<<": false"<<endl;
}
}
i++;
}
//system("pause");
return 0;
}
sd
//a a和advanced一道题很像。
#include<iostream>
#include<string>
#include<climits>
using namespace std;
int main(){
int a,b,c,n,i=0;
cin>>n;
while(i<n){
cin>>a>>b>>c;
// cout<<LONG_MAX;
if(a>0&&b>0&&(a>LONG_MAX-b)){
cout<<"Case #"<<i+1<<": true"<<endl;
}else if(a<0&&b<0&&(a<LONG_MIN-b)){
cout<<"Case #"<<i+1<<": false"<<endl;
}else {
if(a+b>c){
cout<<"Case #"<<i+1<<": true"<<endl;
}else{
cout<<"Case #"<<i+1<<": false"<<endl;
}
}
i++;
}
//system("pause");
return 0;
}
为什么上面这个不行3.最简单的方法。
#include<iostream>
#include<string>
#include<climits>
using namespace std;
int main(){
long long int a,b,c,n,i=0;
cin>>n;
while(i<n){
if(a+b>c){
cout<<"Case #"<<i+1<<": true"<<endl;
}else{
cout<<"Case #"<<i+1<<": false"<<endl;
}
i++;
}
//system("pause");
return 0;
}
#include<iostream>
#include<string>
using namespace std;
int main(){
int a,b,c,n,i=0;
cin>>n;
while(i<n){
cin>>a>>b>>c;
if(a>0&&b>0&&(a+b)>0){
cout<<"Case #"<<i+1<<": true"<<endl;
}else if(a<0&&b<0&&(a+b)<0){
cout<<"Case #"<<i+1<<": false"<<endl;
}else {
if(a+b>c){
cout<<"Case #"<<i+1<<": true"<<endl;
}else{
cout<<"Case #"<<i+1<<": false"<<endl;
}
}
i++;
}
//system("pause");
return 0;
}
//a a和advanced一道题很像。
#include<iostream>
#include<string>
#include<climits>
using namespace std;
int main(){
int a,b,c,n,i=0;
cin>>n;
while(i<n){
cin>>a>>b>>c;
// cout<<LONG_MAX;
if(a>0&&b>0&&(a>LONG_MAX-b)){
cout<<"Case #"<<i+1<<": true"<<endl;
}else if(a<0&&b<0&&(a<LONG_MIN-b)){
cout<<"Case #"<<i+1<<": false"<<endl;
}else {
if(a+b>c){
cout<<"Case #"<<i+1<<": true"<<endl;
}else{
cout<<"Case #"<<i+1<<": false"<<endl;
}
}
i++;
}
//system("pause");
return 0;
}
为什么上面这个不行3.最简单的方法。
#include<iostream> #include<string> #include<climits> using namespace std; int main(){ long long int a,b,c,n,i=0; cin>>n; while(i<n){ if(a+b>c){ cout<<"Case #"<<i+1<<": true"<<endl; }else{ cout<<"Case #"<<i+1<<": false"<<endl; } i++; } //system("pause"); return 0; }