#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; }
2 3 5 10 15
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