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;
}

 

posted @ 2019-07-11 16:10  悲离  阅读(305)  评论(0编辑  收藏  举报