// 阿汪面前有两只盲盒,每只盒子打开都有两种可能:或者装了 X 克狗粮,或者是一只容量为 Y 克的狗粮储蓄盒。如果是狗粮,阿汪可以快乐地吃掉;如果是空储蓄盒,那就倒霉了,阿汪必须想办法找到狗粮把这只储蓄盒装满,自己还吃不到。
// 正当阿汪发愁不知道该怎么选的时候,铲屎官大手一挥:“小孩子才做选择,大人全都要!”但全都要的结果,却不一定是赚了还是亏了……
// 我们假设聪明的阿汪总是能嗅出狗粮最多的盒子,并且绝不会选任何储蓄盒。而铲屎官没有这样的鼻子,他一定是全都要。铲屎官如果打开了有储蓄盒的盒子,就必须想办法把储蓄盒装满,他会优先用另一只盒子里的狗粮装(如果另外一只盒子里有狗粮),不够了还得自己去买新的狗粮,这样阿汪可就亏啦,什么都吃不到了。本题就请你判断阿汪到底是赚了还是亏了。
// 输入格式:
// 输入在一行中给出两个整数,绝对值都不超过 100,中间用一个空格分开,分别代表两只盒子里的东西。如果是正数就表示是狗粮的份量,如果是负数就表示绝对值是空盆的容量。两个数都肯定不是 0,因为保证没有空盒子。
// 输出格式:
// 第一行输出两个结果:如果让阿汪选能吃到的狗粮 A,和如果铲屎官全都要能吃到的狗粮 B。两个数字间用一个空格分开。如果铲屎官的决定让阿汪赚到了,就在第二行输出一个笑脸 ^_^,否则输出一个哭脸 T_T。但如果反正什么都吃不到(两个盒子里都没有狗粮),就输出一张躺平脸 -_-。
#include <iostream>
#include <algorithm>
using namespace std;
int main() {
int a, b;
cin >> a >> b;
int A = max(a > 0 ? a : 0, b > 0 ? b : 0);//A:狗对两个盒子的选择
int B = 0;//B:人的方法能吃到的狗粮数
if (a > 0 && b > 0) {//①两个盒子中都有狗粮
B = a + b;
} else if (a > 0 || b > 0) {//②两个盒子中只有一个有狗粮
int food = max(a, b);
int box = min(a, b);
if (food >= -box) {
B = food + box;
} else {//③两个盒子都没有狗粮,无论怎样都吃不到
B = 0;
}
}
cout << A << " " << B << endl;
if (A == 0 && B == 0) {
cout << "-_-" << endl; //两个盒子都为0
} else if (B > A) {
cout << "^_^" << endl;//人的方法吃得更多
} else {
cout << "T_T" << endl;//狗的方法吃得更多
}
return 0;
}
//模拟简单运算器的工作。假设计算器只能进行加减乘除运算,运算数和结果都是整数,四种运算符的优先级相同,按从左到右的顺序计算。
// 输入格式:
// 输入在一行中给出一个四则运算算式,没有空格,且至少有一个操作数。遇等号”=”说明输入结束。
// 输出格式:
// 在一行中输出算式的运算结果,或者如果除法分母为0或有非法运算符,则输出错误信息“ERROR”。
#include <iostream>
#include <string>
using namespace std;
int main() {
string s;
cin >> s;//输入算式
int result = 0;
int num = 0;
char sign = '+';
int i = 0;
while (isdigit(s[i])) {
num = num * 10 + (s[i] - '0');
i++;
}//识别数字
result = num;
while (i < s.length()) {
sign = s[i];//将当前遇到的运算符赋值给sign
i++;
if (sign == '=') {//判断当前运算符是否是象征终止运算的=
cout << result << endl;
break;
}
if (sign != '+' && sign != '-' && sign != '*' && sign != '/') {//判断是否有不合法的运算符
cout << "ERROR" << endl;
return 0;
}
num = 0;
while (i < s.length() && isdigit(s[i])) {
num = num * 10 + (s[i] - '0');
i++;
}//判断下一个参与运算的数字是多少
if (sign == '+') {
result += num;
} else if (sign == '-') {
result -= num;
} else if (sign == '*') {
result *= num;
} else if (sign == '/') {
if (num == 0) {
cout << "ERROR" << endl;
return 0;
}
result /= num;
}//进行运算
}
return 0;
}