#include <iostream> #include <vector> #include <algorithm> #include <cmath> using namespace std; bool DFS(const vector<double>& nums) { if (nums.size() == 1) { if (abs(nums[0]-24) <= 0.00000001) { return true; } else { return false; } } for (int i = 0; i < nums.size(); i++) { vector<double> tmpVec1 = nums; double temp1 = nums[i]; auto it1 = find(tmpVec1.begin(), tmpVec1.end(), temp1); tmpVec1.erase(it1); for (int j = i + 1; j < nums.size(); j++) { vector<double> tmpVec2 = tmpVec1; double temp2 = nums[j]; auto it2 = find(tmpVec2.begin(), tmpVec2.end(), temp2); tmpVec2.erase(it2); vector<double> res; res.push_back(temp1 * temp2); if (temp1 != 0) { res.push_back(temp2 / temp1); } res.push_back(temp1 + temp2); res.push_back(temp1 - temp2); res.push_back(temp2 - temp1); if (temp2 != 0) res.push_back(temp1 / temp2); for (int z = 0; z < res.size(); z++) { tmpVec2.push_back(res[z]); if (DFS(tmpVec2)) return true; tmpVec2.erase(find(tmpVec2.begin(), tmpVec2.end(), res[z])); } } } return false; } int main() { double n1, n2, n3, n4; cin >> n1 >> n2 >> n3 >> n4; vector<double> nums = {n1, n2, n3, n4}; bool flag = DFS(nums); if (flag) cout << "true"; else cout << "false"; } // 64 位输出请用 printf("%lld")