PAT乙级1011A+B 和 C 15(分)

题目

给定区间 [ ? 2 3 1 , 2 3 1 -2^{31}, 2^{31} ? 2 ? 3 1 ? ? , 2 ? 3 1 ? ? ] 内的 3 个整数 A A A B B B C C C ,请判断 A + B A+B A + B 是否大于 C C C

输入格式:

输入第 1 行给出正整数 T T T ( ≤ 1 0 \le 10 1 0 ),是测试用例的个数。随后给出 T T T 组测试用例,每组占一行,顺序给出 A A A B B B C C C 。整数间以空格分隔。

输出格式:

对每组测试用例,在一行中输出 Case #X: true 如果 A + B > C A+B>C 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

代码


#include<iostream>
#include<string>
using namespace std;

string judge(string a, string b, string c, int n);
int main()
{
	string a, b, c, output = "";
	int i, n;
	cin >> n;
	for (i = 0; i < n; i++)
	{
		cin >> a >> b >> c;
		output += judge(a, b, c, i) + "\n";
	}
	cout << output;
	return 0;
}
string judge(string a, string b, string c, int n)
{
	string add = "", right = "Case #" + to_string(n + 1) + ": true", notright  = "Case #" + to_string(n + 1) + ": false",tool;
	bool flag = true;
	if (a[0] == '-' && b[0] == '-' && c[0] == '-')
	{
		a = a.substr(1, a.length() - 1);
		b = b.substr(1, b.length() - 1);
		c = c.substr(1, c.length() - 1);
		flag = false;
	}
	else if (a[0] == '-' && b[0] == '-' && c[0] != '-')
		return notright;
	else if (a[0] != '-' && b[0] == '-' && c[0] == '-')
	{
		b = b.substr(1, b.length() - 1);
		tool = b;
		b = c.substr(1, c.length() - 1);
		c = b;
	}
	else if (a[0] != '-' && b[0] == '-' && c[0] != '-')
	{
		b = b.substr(1, b.length() - 1);
		tool = c;
		c = a;
		a = tool;
		flag = false;
	}
	else if (a[0] != '-' && b[0] != '-' && c[0] == '-')
		return right;
	else if (a[0] == '-' && b[0] != '-' && c[0] == '-')
	{
		a = a.substr(1, b.length() - 1);
		tool = c.substr(1, c.length() - 1);
		c = a;
		a = tool;
	}
	else if (a[0] == '-' && b[0] != '-' && c[0] != '-')
	{
		a = a.substr(1, b.length() - 1);
		tool = c;
		c = b;
		b = tool;
		flag = false;
	}
	a = "x" + a;
	b = "x" + b;
	int i, j, p, q, addi, jin = 0;
	for (i = a.length() - 1, j = b.length() - 1; a[i] != 'x' || b[j] != 'x';)
	{
		switch (a[i]) {
		case '0':p = 0; break;
		case '1':p = 1; break;
		case '2':p = 2; break;
		case '3':p = 3; break;
		case '4':p = 4; break;
		case '5':p = 5; break;
		case '6':p = 6; break;
		case '7':p = 7; break;
		case '8':p = 8; break;
		case '9':p = 9; break;
		default:p = 0;
		}
		switch (b[j]) {
		case '0':q = 0; break;
		case '1':q = 1; break;
		case '2':q = 2; break;
		case '3':q = 3; break;
		case '4':q = 4; break;
		case '5':q = 5; break;
		case '6':q = 6; break;
		case '7':q = 7; break;
		case '8':q = 8; break;
		case '9':q = 9; break;
		default:q = 0;
		}
		addi = p + q + jin;
		add = to_string(addi % 10) + add;
		jin = addi / 10;
		if (a[i] != 'x')
			i--;
		if (b[j] != 'x')
			j--;
	}
	if (add.length() > c.length())
	{
		if (flag)
			return right;
		else
			return notright;
	}
	else if (add.length() < c.length())
	{
		if (flag)
			return notright;
		else
			return right;
	}
	else
	{
		for (i = 0; add[i] != '\0'; i++)
		{
			if (add[i] > c[i])
			{
				if (flag)
					return right;
				else
					return notright;
			}
			else if(add[i] < c[i])
			{
				if (flag)
					return notright;
				else
					return right;
			}
		}
		if (flag)
			return notright;
		else
			return right;
	}
}

题目详情链接

发布了104 篇原创文章 · 获赞 0 · 访问量 2881

猜你喜欢

转载自blog.csdn.net/qq_41985293/article/details/105251380