CCF-201903-2— 二十四点
题目:
代码:
#include <iostream>
using namespace std;
int main(){
int n,m=0;
int k,ans;
cin>>n;
int od[4];
char op[3];
string s[n];
while(n--){
cin>>od[0]>>op[0]>>od[1]>>op[1]>>od[2]>>op[2]>>od[3];
k=3;
for(int i=0;i<k;i++){
if((op[i]=='x')||(op[i]=='/')){
if(op[i]=='x'){
od[i]=od[i]*od[i+1];
}else{
od[i]=od[i]/od[i+1];
}
for(int j=i+1;j<k;j++){
od[j]=od[j+1];
op[j-1]=op[j];
}
k--;
i--;
}
}
ans=od[0];//三个符号是连乘或者连除
for(int i=0;i<k;i++){
if(op[i]=='+'){
ans=od[i]+od[i+1];
od[i+1]=ans;
}else{
ans=od[i]-od[i+1];
od[i+1]=ans;
}
}
if(ans==24){
s[m]="Yes";
m++;
}else{
s[m]="No";
m++;
}
}
for(int i=0;i<m;i++){
cout<<s[i]<<endl;
}
return 0;
}