fork download
  1. #include <iostream>
  2. #include <vector>
  3. #include <unordered_map>
  4.  
  5. using namespace std;
  6.  
  7. long long tot = 0;
  8. unordered_map<char, vector<char>> adj = {
  9. {'n', {'/', '7'}},
  10. {'/', {'n', '*', '8'}},
  11. {'*', {'/', '-', '9'}},
  12. {'-', {'*', '+'}},
  13. {'7', {'8', 'n', '4'}},
  14. {'8', {'/', '7', '9', '5'}},
  15. {'9', {'*', '8', '+', '6'}},
  16. {'+', {'-', '9', '6', 'e'}},
  17. {'4', {'7', '5', '1'}},
  18. {'5', {'8', '4', '6', '2'}},
  19. {'6', {'9', '5', '+', '3'}},
  20. {'1', {'4', '2', '0'}},
  21. {'2', {'5', '1', '3', '0'}},
  22. {'3', {'6', '2', 'e', '.'}},
  23. {'e', {'+', '3', '.'}},
  24. {'0', {'1', '2', '.'}},
  25. {'.', {'0', '3', 'e'}}
  26. };
  27.  
  28. void solve(char s, int cnt) {
  29. if (cnt == 10) {
  30. tot++;
  31. return;
  32. }
  33. for (char nxt : adj[s]) {
  34. solve(nxt, cnt + 1);
  35. }
  36. }
  37.  
  38. int main() {
  39. vector <char> all_ch = {'n', '/', '*', '-', '7', '8', '9', '+',
  40. '4', '5', '6', '1', '2', '3', 'e', '0', '.'};
  41.  
  42. for (char s : all_ch) {
  43. solve(s, 1);
  44. }
  45.  
  46. cout << tot << '\n';
  47. return 0;
  48. }
Success #stdin #stdout 0.01s 5284KB
stdin
Standard input is empty
stdout
1200908