fork download
  1. #include <iostream>
  2. #include <vector>
  3. #include <functional>
  4. using namespace std;
  5.  
  6. int main() {
  7. for (int n = 1; n <= 10; ++n) {
  8. long long p = 1;
  9. int s = 0;
  10. for (int i = 1; i <= n; ++i) {
  11. s += i;
  12. p *= i;
  13. }
  14. vector<int> way;
  15. function<void (int, int, int,int)> rec = [&](int step, int prev, int as, long long ap) {
  16. if (p % ap != 0) return;
  17. if (step == n) {
  18. if (as == s && ap == p) {
  19. for (int num : way) {
  20. cout << num << ' ';
  21. }
  22. cout << endl;
  23. }
  24. return;
  25. }
  26. if (as + prev > s) return;
  27. for (int next = prev; next <= n; ++next) {
  28. way.push_back(next);
  29. rec(step+1, next, as + next, ap * next);
  30. way.pop_back();
  31. }
  32. };
  33. cout << "n = " << n << endl;
  34. rec(0, 1, 0, 1);
  35. cout << endl;
  36. }
  37. return 0;
  38. }
Success #stdin #stdout 0.01s 5440KB
stdin
Standard input is empty
stdout
n = 1
1 

n = 2
1 2 

n = 3
1 2 3 

n = 4
1 2 3 4 

n = 5
1 2 3 4 5 

n = 6
1 2 3 4 5 6 

n = 7
1 2 3 4 5 6 7 

n = 8
1 2 3 4 5 6 7 8 

n = 9
1 2 3 4 5 6 7 8 9 
1 2 4 4 4 5 7 9 9 

n = 10
1 2 3 4 5 6 7 8 9 10 
1 2 3 4 6 6 6 7 10 10 
1 2 4 4 4 5 7 9 9 10 
1 3 3 3 4 6 7 8 10 10 
1 3 3 4 4 4 7 9 10 10 
2 2 2 3 4 6 7 9 10 10