#include<iostream>
using namespace std;
bool ismd(char op){
return (op == '/' || op == 'x' ? true : false);
}
int op(char op, int num1, int num2){
switch (op) {
case '+':
return num1 + num2;
case '-':
return num1 - num2;
case 'x':
return num1 * num2;
case '/':
return num1 / num2;
default:
return 0;
}
}
int main(){
int n,sum, num1, num2, num3, num4;
char op1, op2, op3;
string s;
cin >> n;
while(n--){
cin >> s;
num1 = s[0] - '0'; num2 = s[2] - '0'; num3 = s[4] - '0'; num4 = s[6] - '0';
op1 = s[1]; op2 = s[3]; op3 = s[5];
if(ismd(op2)){
if(ismd(op1)){
if(ismd(op3)) sum = op(op3, op(op2, op(op1, num1, num2), num3), num4);
else sum = op(op3, op(op2, op(op1, num1, num2), num3), num4);
}else{
if(ismd(op3)) sum = op(op1, num1, op(op3, op(op2, num2, num3), num4));
else sum = op(op3, op(op1, num1, op(op2, num2, num3)), num4);
}
}else{
if(ismd(op1)){
if(ismd(op3)) sum = op(op2, op(op1, num1, num2), op(op3, num3, num4));
else sum = op(op3, op(op2, op(op1, num1, num2),num3),num4);
}else{
if(ismd(op3)) sum = op(op2, op(op1, num1, num2), op(op3, num3, num4));
else sum = op(op3, op(op2, op(op1, num1, num2),num3),num4);
}
}
cout << (sum == 24 ? "Yes" : "No") << endl;
}
return 0;
}
思路不难,就是列举所有情况一个一个枚举计算,但是调试起来找bug贼麻烦
一个x号我一直当成*号来使一直错,还有num1234忘了放进循环里面,两个错误让我找了一个多小时的bug才找到