fork download
  1. #include <algorithm>
  2. #include <iostream>
  3. #include <functional>
  4. #include <map>
  5.  
  6. int main()
  7. {
  8. int numbers[] = {18, 12, 4, 5};
  9. char signs[] = {'+', '-', '/', '*'};
  10. std::map<char, std::function<int(int, int)>> m = {
  11. {'+', [](int a, int b){ return a + b; }},
  12. {'-', [](int a, int b){ return a - b; }},
  13. {'/', [](int a, int b){ return a / b; }},
  14. {'*', [](int a, int b){ return a * b; }},
  15. };
  16.  
  17. std::sort(std::begin(signs), std::end(signs));
  18.  
  19. do {
  20. int res = m[signs[2]](m[signs[1]](m[signs[0]](numbers[0], numbers[1]), numbers[2]), numbers[3]);
  21.  
  22. std::cout << numbers[0] << signs[0] << numbers[1] << signs[1]
  23. << numbers[2] << signs[2] << numbers[3] << " = " << res << std::endl;
  24.  
  25. } while (std::next_permutation(std::begin(signs), std::end(signs)));
  26. return 0;
  27. }
  28.  
Success #stdin #stdout 0s 3480KB
stdin
Standard input is empty
stdout
18*12+4-5 = 215
18*12+4/5 = 44
18*12-4+5 = 217
18*12-4/5 = 42
18*12/4+5 = 59
18*12/4-5 = 49
18+12*4-5 = 115
18+12*4/5 = 24
18+12-4*5 = 130
18+12-4/5 = 5
18+12/4*5 = 35
18+12/4-5 = 2
18-12*4+5 = 29
18-12*4/5 = 4
18-12+4*5 = 50
18-12+4/5 = 2
18-12/4*5 = 5
18-12/4+5 = 6
18/12*4+5 = 9
18/12*4-5 = -1
18/12+4*5 = 25
18/12+4-5 = 0
18/12-4*5 = -15
18/12-4+5 = 2