#include <iostream> #include <vector> #include <string> #include <unordered_map> #include <algorithm> using namespace std; // 映射牌面到对应的整数值 unordered_map<string, int> cardMap = { {"A", 1}, {"2", 2}, {"3", 3}, {"4", 4}, {"5", 5}, {"6", 6}, {"7", 7}, {"8", 8}, {"9", 9}, {"10", 10}, {"J", 11}, {"Q", 12}, {"K", 13} }; // 所有运算符 char ops[] = {'+', '-', '*', '/'}; // 从左到右计算,不含括号 bool compute(int a, int b, char op, int &res) { if (op == '+') res = a + b; else if (op == '-') res = a - b; else if (op == '*') res = a * b; else { if (b == 0) return false; // 除数不能为0 res = a / b; // 整数除法 } return true; } string solve(vector<string>& cards) { // 检查是否包含大小王 for (auto& card : cards) { if (card == "joker" || card == "JOKER") return "ERROR"; } // 枚举所有牌的排列 sort(cards.begin(), cards.end()); do { // 枚举所有3个运算符的组合 for (char op1 : ops) { for (char op2 : ops) { for (char op3 : ops) { int v1 = cardMap[cards[0]]; int v2 = cardMap[cards[1]]; int v3 = cardMap[cards[2]]; int v4 = cardMap[cards[3]]; int r1, r2, r3; if (!compute(v1, v2, op1, r1)) continue; if (!compute(r1, v3, op2, r2)) continue; if (!compute(r2, v4, op3, r3)) continue; if (r3 == 24) { return cards[0] + op1 + cards[1] + op2 + cards[2] + op3 + cards[3]; } } } } } while (next_permutation(cards.begin(), cards.end())); return "NONE"; } int main() { vector<string> cards(4); for (int i = 0; i < 4; ++i) { cin >> cards[i]; } cout << solve(cards) << endl; return 0; }