fork(1) download
#include <iostream>
#include <algorithm>

using namespace std;

const int MAX_VALUE = 40;

int tab[MAX_VALUE];
int ileKomb;

void drukuj(int *koniec) {
    for (int *i=tab; i<koniec; ++i) {
        cout << *i << " ";
    }
    cout << endl;
    ileKomb++;
}

void rozbijNaSume(int x, int maxWart, int *a) {
    maxWart = min(x,maxWart);
    if (x==maxWart) {
        *a = x;
        drukuj(a+1);
        --maxWart;
    }
    for (int i=maxWart; i>0; --i) {
        *a = i;
        rozbijNaSume(x-i, i, a+1);
    }
}

int main() {
    int n;
    while (cin >> n) {
        if (n>MAX_VALUE)
            break;

        ileKomb = 0;
        rozbijNaSume(n,n,tab);
        cout << "Możliwości: " << ileKomb << endl << endl;
    }
    return 0;
}
Success #stdin #stdout 0s 2856KB
stdin
2 3 5 10 15
stdout
2 
1 1 
Możliwości: 2

3 
2 1 
1 1 1 
Możliwości: 3

5 
4 1 
3 2 
3 1 1 
2 2 1 
2 1 1 1 
1 1 1 1 1 
Możliwości: 7

10 
9 1 
8 2 
8 1 1 
7 3 
7 2 1 
7 1 1 1 
6 4 
6 3 1 
6 2 2 
6 2 1 1 
6 1 1 1 1 
5 5 
5 4 1 
5 3 2 
5 3 1 1 
5 2 2 1 
5 2 1 1 1 
5 1 1 1 1 1 
4 4 2 
4 4 1 1 
4 3 3 
4 3 2 1 
4 3 1 1 1 
4 2 2 2 
4 2 2 1 1 
4 2 1 1 1 1 
4 1 1 1 1 1 1 
3 3 3 1 
3 3 2 2 
3 3 2 1 1 
3 3 1 1 1 1 
3 2 2 2 1 
3 2 2 1 1 1 
3 2 1 1 1 1 1 
3 1 1 1 1 1 1 1 
2 2 2 2 2 
2 2 2 2 1 1 
2 2 2 1 1 1 1 
2 2 1 1 1 1 1 1 
2 1 1 1 1 1 1 1 1 
1 1 1 1 1 1 1 1 1 1 
Możliwości: 42

15 
14 1 
13 2 
13 1 1 
12 3 
12 2 1 
12 1 1 1 
11 4 
11 3 1 
11 2 2 
11 2 1 1 
11 1 1 1 1 
10 5 
10 4 1 
10 3 2 
10 3 1 1 
10 2 2 1 
10 2 1 1 1 
10 1 1 1 1 1 
9 6 
9 5 1 
9 4 2 
9 4 1 1 
9 3 3 
9 3 2 1 
9 3 1 1 1 
9 2 2 2 
9 2 2 1 1 
9 2 1 1 1 1 
9 1 1 1 1 1 1 
8 7 
8 6 1 
8 5 2 
8 5 1 1 
8 4 3 
8 4 2 1 
8 4 1 1 1 
8 3 3 1 
8 3 2 2 
8 3 2 1 1 
8 3 1 1 1 1 
8 2 2 2 1 
8 2 2 1 1 1 
8 2 1 1 1 1 1 
8 1 1 1 1 1 1 1 
7 7 1 
7 6 2 
7 6 1 1 
7 5 3 
7 5 2 1 
7 5 1 1 1 
7 4 4 
7 4 3 1 
7 4 2 2 
7 4 2 1 1 
7 4 1 1 1 1 
7 3 3 2 
7 3 3 1 1 
7 3 2 2 1 
7 3 2 1 1 1 
7 3 1 1 1 1 1 
7 2 2 2 2 
7 2 2 2 1 1 
7 2 2 1 1 1 1 
7 2 1 1 1 1 1 1 
7 1 1 1 1 1 1 1 1 
6 6 3 
6 6 2 1 
6 6 1 1 1 
6 5 4 
6 5 3 1 
6 5 2 2 
6 5 2 1 1 
6 5 1 1 1 1 
6 4 4 1 
6 4 3 2 
6 4 3 1 1 
6 4 2 2 1 
6 4 2 1 1 1 
6 4 1 1 1 1 1 
6 3 3 3 
6 3 3 2 1 
6 3 3 1 1 1 
6 3 2 2 2 
6 3 2 2 1 1 
6 3 2 1 1 1 1 
6 3 1 1 1 1 1 1 
6 2 2 2 2 1 
6 2 2 2 1 1 1 
6 2 2 1 1 1 1 1 
6 2 1 1 1 1 1 1 1 
6 1 1 1 1 1 1 1 1 1 
5 5 5 
5 5 4 1 
5 5 3 2 
5 5 3 1 1 
5 5 2 2 1 
5 5 2 1 1 1 
5 5 1 1 1 1 1 
5 4 4 2 
5 4 4 1 1 
5 4 3 3 
5 4 3 2 1 
5 4 3 1 1 1 
5 4 2 2 2 
5 4 2 2 1 1 
5 4 2 1 1 1 1 
5 4 1 1 1 1 1 1 
5 3 3 3 1 
5 3 3 2 2 
5 3 3 2 1 1 
5 3 3 1 1 1 1 
5 3 2 2 2 1 
5 3 2 2 1 1 1 
5 3 2 1 1 1 1 1 
5 3 1 1 1 1 1 1 1 
5 2 2 2 2 2 
5 2 2 2 2 1 1 
5 2 2 2 1 1 1 1 
5 2 2 1 1 1 1 1 1 
5 2 1 1 1 1 1 1 1 1 
5 1 1 1 1 1 1 1 1 1 1 
4 4 4 3 
4 4 4 2 1 
4 4 4 1 1 1 
4 4 3 3 1 
4 4 3 2 2 
4 4 3 2 1 1 
4 4 3 1 1 1 1 
4 4 2 2 2 1 
4 4 2 2 1 1 1 
4 4 2 1 1 1 1 1 
4 4 1 1 1 1 1 1 1 
4 3 3 3 2 
4 3 3 3 1 1 
4 3 3 2 2 1 
4 3 3 2 1 1 1 
4 3 3 1 1 1 1 1 
4 3 2 2 2 2 
4 3 2 2 2 1 1 
4 3 2 2 1 1 1 1 
4 3 2 1 1 1 1 1 1 
4 3 1 1 1 1 1 1 1 1 
4 2 2 2 2 2 1 
4 2 2 2 2 1 1 1 
4 2 2 2 1 1 1 1 1 
4 2 2 1 1 1 1 1 1 1 
4 2 1 1 1 1 1 1 1 1 1 
4 1 1 1 1 1 1 1 1 1 1 1 
3 3 3 3 3 
3 3 3 3 2 1 
3 3 3 3 1 1 1 
3 3 3 2 2 2 
3 3 3 2 2 1 1 
3 3 3 2 1 1 1 1 
3 3 3 1 1 1 1 1 1 
3 3 2 2 2 2 1 
3 3 2 2 2 1 1 1 
3 3 2 2 1 1 1 1 1 
3 3 2 1 1 1 1 1 1 1 
3 3 1 1 1 1 1 1 1 1 1 
3 2 2 2 2 2 2 
3 2 2 2 2 2 1 1 
3 2 2 2 2 1 1 1 1 
3 2 2 2 1 1 1 1 1 1 
3 2 2 1 1 1 1 1 1 1 1 
3 2 1 1 1 1 1 1 1 1 1 1 
3 1 1 1 1 1 1 1 1 1 1 1 1 
2 2 2 2 2 2 2 1 
2 2 2 2 2 2 1 1 1 
2 2 2 2 2 1 1 1 1 1 
2 2 2 2 1 1 1 1 1 1 1 
2 2 2 1 1 1 1 1 1 1 1 1 
2 2 1 1 1 1 1 1 1 1 1 1 1 
2 1 1 1 1 1 1 1 1 1 1 1 1 1 
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 
Możliwości: 176