Hydron

Math

Jun 2nd, 2022
821
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.06 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2.  
  3. using namespace std;
  4.  
  5. using ll = long long;
  6.  
  7. namespace Algo1_22{
  8.     vector < ll > d;
  9.     ll cnt;
  10.     void f(ll n){
  11.         if (n < 0) return;
  12.         if (n == 0){
  13.             for (ll i=1; i<cnt; i++){
  14.                 cout << d[i] << " \n"[i==cnt-1];
  15.             }
  16.             return;
  17.         }else{
  18.             for (ll i=d[cnt-1]; i>0; i--){
  19.                 d[cnt++] = i;
  20.                 f(n-i);
  21.                 cnt --;
  22.             }
  23.         }
  24.     }
  25.     void run(){
  26.         ll n;
  27.         cin >> n;
  28.         d.resize(n+2);
  29.         d[0] = n;
  30.         cnt = 1;
  31.         f(n);
  32.     }
  33. }
  34.  
  35. namespace Algo1_19{
  36.     void run(){
  37.         vector < vector < vector < ll > > > res;
  38.         ll n;
  39.         cin >> n;
  40.         res.push_back({{1}});
  41.         for (ll i=2; i<=n; i++){
  42.             vector < vector < vector < ll > > > tmp;
  43.             for (ll j=0; j<res.size(); j++){
  44.                 if (j&1){
  45.                     res[j].push_back({i});
  46.                     tmp.push_back(res[j]);
  47.                     res[j].pop_back();
  48.                     for (ll k=res[j].size()-1; k>-1; k--){
  49.                         res[j][k].push_back(i);
  50.                         tmp.push_back(res[j]);
  51.                         res[j][k].pop_back();
  52.                     }
  53.                 }else{
  54.                     for (ll k=0; k<res[j].size(); k++){
  55.                         res[j][k].push_back(i);
  56.                         tmp.push_back(res[j]);
  57.                         res[j][k].pop_back();
  58.                     }
  59.                     res[j].push_back({i});
  60.                     tmp.push_back(res[j]);
  61.                     res[j].pop_back();
  62.                 }
  63.             }
  64.             res = tmp;
  65.         }
  66.         for (vector<vector<ll>> &i: res){
  67.             for (vector<ll> &j: i){
  68.                 cout << '{';
  69.                 for (ll &k: j){
  70.                     cout << k << " }"[k==j.back()];
  71.                 }
  72.             }
  73.             cout << '\n';
  74.         }
  75.     }
  76. }
  77.  
  78. int main(){
  79.     Algo1_22::run();
  80.     Algo1_19::run();
  81.     return 0;
  82. }
  83.  
Advertisement
Add Comment
Please, Sign In to add comment