#include <stdio.h>
void denew(int B, int * N, int * K){
int n,k,i,b;
for( n=1; n<B; n++ ){
b=i=n;
for( k=2; 2*k<=n; k++ ) {
b = b*(--i)/k;
if( b==B ) {
*N= n; *K= k; return; }
if( b>B ) break;
}
}
*N=B; *K=1;
}
#define MAX 20
int n,k,licznik=0,wsie=0;
int p[MAX+2];
int min( int x, int y) { return x<y ? x : y;}
long long int silnia(int n){
long long int s=1;
while(n) s*=n--; return s;}
void PrintIt(int t, int z) {
if( z>0 && t!=z) return;
int i,pop; long long int perm;
printf("%3d, %3d | ", ++licznik
, t
); p[t+1]=0; pop=1; perm=silnia(t);
for(i=1; i<=t; i++){
if(p[i]!=p[pop]){
perm/=silnia(i-pop);
pop=i;}
perm/=silnia(i-pop);
wsie+=perm;}
void P (int n, int k, int t, int z) {
int j;
p[t] = k;
if (n==k)
PrintIt(t, z);
for (j=min(k,n-k); j>=1; j--)
P(n-k,j,t+1,z);}
int main() {
int i, z ,d;
P(i*2, i, 0, z);
for(i
=1;i
<23;i
++) printf(" "); denew(wsie, &i, &z);
printf("Wszystkich do kupy %14d=newton(%d,%d)\n", wsie
, i
, z
); z=wsie & (-wsie);
if( z== wsie){
for(i
=1;i
<23;i
++) printf(" "); i=1; z=2;
while( z != wsie) {
i++; z*=2; }
}
return 0;}
I2luY2x1ZGUgPHN0ZGlvLmg+CiAKdm9pZCBkZW5ldyhpbnQgQiwgaW50ICogTiwgaW50ICogSyl7CiAgICAgICAgaW50IG4sayxpLGI7CiAgICAgICAgZm9yKCBuPTE7IG48QjsgbisrICl7CiAgICAgICAgICAgICAgICBiPWk9bjsKICAgICAgICAgICAgICAgIGZvciggaz0yOyAyKms8PW47ICBrKysgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGIgPSBiKigtLWkpL2s7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmKCBiPT1CICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpOPSBuOyAqSz0gazsgcmV0dXJuOyB9CiAgICAgICAgICAgICAgICAgICAgICAgIGlmKCBiPkIgKSBicmVhazsKICAgICAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgKk49QjsgKks9MTsKfQojZGVmaW5lIE1BWCAyMAogCmludCAgbixrLGxpY3puaWs9MCx3c2llPTA7CmludCAgcFtNQVgrMl07CiAKaW50IG1pbiggaW50IHgsIGludCB5KSB7IHJldHVybiB4PHkgPyB4IDogeTt9CiAKbG9uZyBsb25nIGludCBzaWxuaWEoaW50IG4pewogICBsb25nIGxvbmcgaW50IHM9MTsKICAgd2hpbGUobikgcyo9bi0tOyByZXR1cm4gczt9CiAgIAp2b2lkIFByaW50SXQoaW50IHQsIGludCB6KSB7CiAgIGlmKCB6PjAgJiYgdCE9eikgcmV0dXJuOwogICBpbnQgaSxwb3A7IGxvbmcgbG9uZyBpbnQgcGVybTsKICAgcHJpbnRmKCIlM2QsICUzZCAgfCAiLCArK2xpY3puaWssIHQpOwogICBwW3QrMV09MDsgcG9wPTE7IHBlcm09c2lsbmlhKHQpOyAKICAgZm9yKGk9MTsgaTw9dDsgaSsrKXsKICAgICAgIGlmKHBbaV0hPXBbcG9wXSl7CiAgICAgICAgICAgcGVybS89c2lsbmlhKGktcG9wKTsKICAgICAgICAgICBwb3A9aTt9IAogICAgICAgcHJpbnRmKCIlMmQgIiwgcFtpXSk7fQogICBwZXJtLz1zaWxuaWEoaS1wb3ApOwogICB3aGlsZShpKys8MjMpIHByaW50ZigiICAgIik7IHByaW50ZigiICUyMGxsdVxuIiwgcGVybSk7CiAgIHdzaWUrPXBlcm07fQogCnZvaWQgUCAoaW50IG4sIGludCBrLCBpbnQgdCwgaW50IHopIHsKICAgaW50IGo7CiAgIHBbdF0gPSBrOwogICBpZiAobj09aykgCiAgICAgICBQcmludEl0KHQsIHopOwogICBmb3IgKGo9bWluKGssbi1rKTsgaj49MTsgai0tKSAKICAgICAgIFAobi1rLGosdCsxLHopO30KIAppbnQgbWFpbigpIHsKICAgaW50IGksIHogLGQ7CiAgIHNjYW5mKCIlZCAlZCIsJmksICZ6KTsKICAgUChpKjIsIGksIDAsIHopOwogICBmb3IoaT0xO2k8MjM7aSsrKSBwcmludGYoIiAgICIpOwogICBkZW5ldyh3c2llLCAmaSwgJnopOwogICBwcmludGYoIldzenlzdGtpY2ggZG8ga3VweSAlMTRkPW5ld3RvbiglZCwlZClcbiIsIHdzaWUsIGksIHopOwogICB6PXdzaWUgJiAoLXdzaWUpOwogICBpZiggej09IHdzaWUpewogICAgICBmb3IoaT0xO2k8MjM7aSsrKSBwcmludGYoIiAgICIpOwogICAgICBpPTE7IHo9MjsKICAgICAgd2hpbGUoIHogIT0gd3NpZSkgewogICAgICAgICBpKys7IHoqPTI7IH0KICAgcHJpbnRmKCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IDIgXiAlZFxuIiwgaSk7CiAgIH0KICAgcmV0dXJuIDA7fQ==