ccf 2019_03_2 二十四点
/* * @Author: tp * @Date: 2019-11-18 18:34:10 * @Last Modified by: tp * @Last Modified time: 2019-11-18 18:48:52 */ #include <cstdio> #include <iostream> #include <cstdlib> #include <cmath> #include <string> #include <cstring> #include <algorithm> #include <stack> #include <queue> #include <set> #include <map> #include <ctime> #include <vector> #include <list> using namespace std; typedef long long ll; typedef unsigned long long ull; int jisuan(int a, char c, int b) { if (c == '+') return a + b; else if (c == '-') return a - b; else if (c == 'x') return a * b; else if (c == '/') return a / b; } int main() { int n; cin>>n; while(n--) { stack<int> qint; stack<char> qchar; char a[8]; cin>>a; for (int i = 0; i < 7; ++i) { if (a[i]=='x'||a[i]=='/') { int b=qint.top(); qint.pop(); int x=jisuan(b,a[i],a[i+1]-'0'); i++; qint.push(x); } else if(a[i]=='-'||a[i]=='+') { qchar.push(a[i]); } else qint.push(a[i]-'0'); } stack<int> qint2; stack<char> qchar2; while(!qchar.empty()) { qchar2.push(qchar.top()); qchar.pop(); } while(!qint.empty()) { qint2.push(qint.top()); qint.pop(); } while(!qchar2.empty()) { int a=qint2.top(); qint2.pop(); int b=qint2.top(); qint2.pop(); char x=qchar2.top(); qchar2.pop(); qint2.push(jisuan(a,x,b)); } if(qint2.top()==24) cout<<"Yes"<<endl; else cout<<"No"<<endl; } return 0; }