解答:
#include <stdio.h>
#include <stdlib.h>
#include <limits.h>
int result(int a,int b,char ch){
int res=0;
switch(ch){
case '+':
res = a+b;
break;
case '-':
res = a-b;
break;
case 'x':
res = a*b;
break;
case '/':
res = a/b;
break;
}
return res;
}
int main() {
int n,i,a,b,c,d,res=0;
char ch1,ch2,ch3;
scanf("%d",&n);
for(i=0; i<n; i++){
int ary[3]={0,0,0};
scanf("%d%c%d%c%d%c%d",&a,&ch1,&b,&ch2,&c,&ch3,&d);
if(ch1=='x' || ch1 == '/'){
ary[0]=1;
}
if(ch2=='x' || ch2 == '/'){
ary[1]=1;
}
if(ch3=='x' || ch3 == '/'){
ary[2]=1;
}
int j;
for(j=0; j<3; j++){
if(ary[j]==1){
switch(j){
case 0:
res = a = b = result(a,b,ch1);
break;
case 1:
res = b = c = result(b,c,ch2);
if(ary[0]==1){
a = b;
}
break;
case 2:
res = c = d = result(c,d,ch3);
if(ary[1]==1){
b = c;
}
if(ary[0]==1){
a = b;
}
break;
}
}
}
for(j=0; j<3; j++){
if(ary[j] == 0){
switch(j){
case 0:
res = a = b = result(a,b,ch1);
if(ary[1]==1){
c = b;
}
if(ary[2]==1){
d = c;
}
break;
case 1:
res = b = c = result(b,c,ch2);
if(ary[0]==1){
a = b;
}
if(ary[2]==1){
d = c;
}
break;
case 2:
res = c = d = result(c,d,ch3);
if(ary[1]==1){
b = c;
}
if(ary[0]==1){
a = b;
}
break;
}
}
}
if(res == 24){
printf("Yes\n");
}else{
printf("No\n");
}
}
return 0;
}