PAT 1065. A+B and C (64bit)

之前一直用string, stringstream处理a, b, c的每个bti... 累死了

看了biaobiaoqi的解题报告才发现原来那么简单.. "签到题" 囧


用long long tmp = a + b去存a,b的和,

当ab同号,且与tmp异号时标识着溢出;

其他情况直接用小于号来解决就可以了。我真是笨: P


#include <iostream>

using namespace std;

int main()
{
	bool flag;
	long long a, b, c, tmp;
	int t;

	cin >> t;
	for (int i = 1; i <= t; ++ i)
	{
		scanf("%lld%lld%lld", &a, &b, &c);
//		cin >> a >> b >> c;
		tmp = a + b;
		if (a > 0 && b > 0 && tmp <= 0)
		{
			flag = true;
		} else if (a < 0 && b < 0 && tmp >= 0)
		{
			flag = false; 
		} else
		{
			flag = tmp > c;
		}
		printf("Case #%d: ", i);
		if (flag)
		{
			cout << "true" << endl;
		} else
		{
			cout << "false" << endl;
		}
	}

	return 0;
}


你可能感兴趣的:(long,long,pat)