fork download
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. int main()
  5. {
  6. while(true)
  7. {
  8. cout<<"Podaj N (0-koniec): ";
  9. unsigned N;
  10. if(cin>>N)
  11. {
  12. if(!N) break;
  13. cout<<endl;
  14. unsigned *tb=(new unsigned[N])-1; // tablica z indeksacją od 1
  15. for(unsigned i=1;i<N;++i) tb[i]=0;
  16. tb[N]=1;
  17. unsigned count=0;
  18. while(true)
  19. {
  20. cout<<(++count)<<":";
  21. for(unsigned i=1;i<=N;++i) if(tb[i]) cout<<" "<<tb[i]<<'*'<<i;
  22. cout<<endl;
  23. unsigned Sum=tb[1],p=1;
  24. tb[1]=0;
  25. while((p<=N)&&(!tb[p])) ++p;
  26. if(p>N) break;
  27. --tb[p];
  28. Sum+=p;
  29. while(--p)
  30. {
  31. unsigned add=Sum/p;
  32. tb[p]=add;
  33. Sum-=p*add;
  34. }
  35. }
  36. delete[] (tb+1); // zwolnienie tablicy z indeksacją od 1
  37. cout<<"Ilosc kombinacji "<<count<<endl;
  38. }
  39. else
  40. {
  41. cin.clear();
  42. cout<<"Ma to byc liczba"<<endl;
  43. }
  44. while(cin.get()!='\n'){}
  45. }
  46. return 0;
  47. }
Success #stdin #stdout 0s 2988KB
stdin
1
2
3
4
5
6
7
8
9
10
0
stdout
Podaj N (0-koniec): 
1: 1*1
Ilosc kombinacji 1
Podaj N (0-koniec): 
1: 1*2
2: 2*1
Ilosc kombinacji 2
Podaj N (0-koniec): 
1: 1*3
2: 1*1 1*2
3: 3*1
Ilosc kombinacji 3
Podaj N (0-koniec): 
1: 1*4
2: 1*1 1*3
3: 2*2
4: 2*1 1*2
5: 4*1
Ilosc kombinacji 5
Podaj N (0-koniec): 
1: 1*5
2: 1*1 1*4
3: 1*2 1*3
4: 2*1 1*3
5: 1*1 2*2
6: 3*1 1*2
7: 5*1
Ilosc kombinacji 7
Podaj N (0-koniec): 
1: 1*6
2: 1*1 1*5
3: 1*2 1*4
4: 2*1 1*4
5: 2*3
6: 1*1 1*2 1*3
7: 3*1 1*3
8: 3*2
9: 2*1 2*2
10: 4*1 1*2
11: 6*1
Ilosc kombinacji 11
Podaj N (0-koniec): 
1: 1*7
2: 1*1 1*6
3: 1*2 1*5
4: 2*1 1*5
5: 1*3 1*4
6: 1*1 1*2 1*4
7: 3*1 1*4
8: 1*1 2*3
9: 2*2 1*3
10: 2*1 1*2 1*3
11: 4*1 1*3
12: 1*1 3*2
13: 3*1 2*2
14: 5*1 1*2
15: 7*1
Ilosc kombinacji 15
Podaj N (0-koniec): 
1: 1*8
2: 1*1 1*7
3: 1*2 1*6
4: 2*1 1*6
5: 1*3 1*5
6: 1*1 1*2 1*5
7: 3*1 1*5
8: 2*4
9: 1*1 1*3 1*4
10: 2*2 1*4
11: 2*1 1*2 1*4
12: 4*1 1*4
13: 1*2 2*3
14: 2*1 2*3
15: 1*1 2*2 1*3
16: 3*1 1*2 1*3
17: 5*1 1*3
18: 4*2
19: 2*1 3*2
20: 4*1 2*2
21: 6*1 1*2
22: 8*1
Ilosc kombinacji 22
Podaj N (0-koniec): 
1: 1*9
2: 1*1 1*8
3: 1*2 1*7
4: 2*1 1*7
5: 1*3 1*6
6: 1*1 1*2 1*6
7: 3*1 1*6
8: 1*4 1*5
9: 1*1 1*3 1*5
10: 2*2 1*5
11: 2*1 1*2 1*5
12: 4*1 1*5
13: 1*1 2*4
14: 1*2 1*3 1*4
15: 2*1 1*3 1*4
16: 1*1 2*2 1*4
17: 3*1 1*2 1*4
18: 5*1 1*4
19: 3*3
20: 1*1 1*2 2*3
21: 3*1 2*3
22: 3*2 1*3
23: 2*1 2*2 1*3
24: 4*1 1*2 1*3
25: 6*1 1*3
26: 1*1 4*2
27: 3*1 3*2
28: 5*1 2*2
29: 7*1 1*2
30: 9*1
Ilosc kombinacji 30
Podaj N (0-koniec): 
1: 1*10
2: 1*1 1*9
3: 1*2 1*8
4: 2*1 1*8
5: 1*3 1*7
6: 1*1 1*2 1*7
7: 3*1 1*7
8: 1*4 1*6
9: 1*1 1*3 1*6
10: 2*2 1*6
11: 2*1 1*2 1*6
12: 4*1 1*6
13: 2*5
14: 1*1 1*4 1*5
15: 1*2 1*3 1*5
16: 2*1 1*3 1*5
17: 1*1 2*2 1*5
18: 3*1 1*2 1*5
19: 5*1 1*5
20: 1*2 2*4
21: 2*1 2*4
22: 2*3 1*4
23: 1*1 1*2 1*3 1*4
24: 3*1 1*3 1*4
25: 3*2 1*4
26: 2*1 2*2 1*4
27: 4*1 1*2 1*4
28: 6*1 1*4
29: 1*1 3*3
30: 2*2 2*3
31: 2*1 1*2 2*3
32: 4*1 2*3
33: 1*1 3*2 1*3
34: 3*1 2*2 1*3
35: 5*1 1*2 1*3
36: 7*1 1*3
37: 5*2
38: 2*1 4*2
39: 4*1 3*2
40: 6*1 2*2
41: 8*1 1*2
42: 10*1
Ilosc kombinacji 42
Podaj N (0-koniec):