#include<iostream> #include<vector> #include<algorithm> using namespace std; double cal(double a, double b, char c){ //根据运算符运算结果 switch(c){ case '+': return a + b; case '-': return a - b; case '*': return a * b; case '/': return a / b; case 'b': return b / a; case 'j': return b - a; } return 0; } bool check(vector<double>& nums){ char op[6] = {'+', '-', '*', '/','b','j'}; sort(nums.begin(), nums.end()); //先按照从小到大排 do{ for(int i = 0; i < 6; i++) //遍历三个位置的所有可能运算符 for(int j = 0; j < 6; j++) for(int k = 0; k < 6; k++){ double first = cal(nums[0], nums[1], op[i]); //依次运算 double second = cal(first, nums[2], op[j]); if(abs(cal(second, nums[3], op[k]) - 24)<1e-5) return true; else if(cal(cal(nums[0], nums[1], op[i]),cal(nums[2], nums[3], op[j]),op[k])==24) return true; } }while(next_permutation(nums.begin(), nums.end())); //依次找到其他排列 return false; } int main(){ vector<double> nums(4); while(cin >> nums[0] >> nums[1] >> nums[2] >> nums[3]){ //输入4个数字 if(check(nums)) cout << "true" << endl; else cout << "false" << endl; } return 0; }