1065. A+B and C (64bit) (20)
时间限制
100 ms
内存限制
32000 kB
代码长度限制
16000 B
判题程序
Standard
作者
HOU, Qiming
Given three integers A, B and C in [-263, 263], you are supposed to tell whether A+B > C.
Input Specification:
The first line of the input gives the positive number of test cases, T (<=10). Then T test cases follow, each consists of a single line containing three integers A, B and C, separated by single spaces.
Output Specification:
For each test case, output in one line "Case #X: true" if A+B>C, or "Case #X: false" otherwise, where X is the case number (starting from 1).
Sample Input:3 1 2 3 2 3 4 9223372036854775807 -9223372036854775808 0Sample Output:
Case #1: false Case #2: true Case #3: false
这个题目意思很简单,主要的处理就是在于a + b溢出情况的比较;若a、b异号,一定不会溢出,可以直接相加比较。若溢出且同为正,则a + b一定比c大,溢出且同为负,则a + b一定比c小。所以主要问题就是判断什么时候溢出:相加变号(为零)则溢出。
/************************************
This is a test program for anything
Enjoy IT!
************************************/
#include <iostream>
#include <iomanip>
#include <algorithm>
#include <vector>
#include <list>
#include <set>
#include <fstream>
#include <string>
#include <cmath>
using namespace std;
int main()
{
/*ifstream cin;
cin.open("in.txt");
ofstream cout;
cout.open("out.txt");*/
//
// TO DO Whatever You WANT!
int T;
cin >> T;
int count = 0;
while (T--)
{
long long int a, b, c, temp;
cin >> a >> b >> c; // 输入a, b, c
temp = a + b;
a + b < c;
if (a > 0 && b > 0) // 正数
{
//
if (a + b <= 0) // 溢出
{
cout << "Case #" << ++count << ": " << "true" << endl;
}
else
{
if (a + b > c) // 输出
{
cout << "Case #" << ++count << ": " << "true" << endl;
}
else
{
cout << "Case #" << ++count << ": " << "false" << endl;
}
}
}
else if (a < 0 && b < 0) // 负数
{
//
if (a + b >= 0) // 溢出
{
cout << "Case #" << ++count << ": " << "false" << endl;
}
else
{
if (a + b > c) // 输出
{
cout << "Case #" << ++count << ": " << "true" << endl;
}
else
{
cout << "Case #" << ++count << ": " << "false" << endl;
}
}
}
else // 异号可以相加
{
if (temp > c) /**这里非常奇怪,写temp > c可以通过AC,写a + b > c就有两个答案错误**/
{
cout << "Case #" << ++count << ": " << "true" << endl;
}
else
{
cout << "Case #" << ++count << ": " << "false" << endl;
}
}
}
//
// system("pause");
return 0;
}