X-Git-Url: http://mj.ucw.cz/gitweb/?a=blobdiff_plain;f=programs%2Fn0.c;h=4327bd645d2e595ae5d4dc98fb3fde3e28203164;hb=124f193d14bed24539c5cd59407637cc38dbe740;hp=36da613680bc94d39b42ab685fd776ca303da8ae;hpb=4152144abe0e2605337a1b1de5c469ac6c815955;p=saga.git diff --git a/programs/n0.c b/programs/n0.c index 36da613..4327bd6 100644 --- a/programs/n0.c +++ b/programs/n0.c @@ -11,6 +11,20 @@ int f(int n) return ff[n]; } +// Kombinacni cislo +int c(int n, int k) +{ + if (k > n/2) + k = n-k; + long long int r = 1; + for (int i=1; i<=k; i++) + { + r *= n--; + r /= i; + } + return r; +} + // Satnarka int s(int d) { @@ -40,8 +54,45 @@ int n0(int z, int d) return nn[z][d]; } +// Vzorecek ze Stanleyho +int s0(int z, int d) +{ + int r = 0; + int p = 1; + for (int k=0; k<=z; k++) + { + r += p * f(d-k) * c(z,k); + p = -p; + } + return r; +} + +// Satnarciny pomerny +double alpha(int n) +{ + double x = 1; + int sg = -1; + for (int i=1; i<=n; i++) + { + x += sg*(1. / f(i)); + sg = -sg; + } + return x; +} + int main(void) { + printf("Satnarka obema zpusoby:\n"); + for (int i=1; i= i) + printf("%d", s0(i, j)); + putchar('\t'); + } + putchar('\n'); + } + putchar('\n'); + + printf("Rozdily:\n"); + for (int i=0; i= i && i > 0) + printf("%d", n0(i-1,j)-n0(i,j)); + putchar('\t'); + } + putchar('\n'); + } + + printf("Pomery:\n"); for (int i=0; i= i && i > 0) { - double d = (double)(n0(i-1,j)-n0(i,j))/n0(i,j); - printf("%5.2f", 1/d); + double d = (double)n0(i-1,j)/(n0(i-1,j)-n0(i,j)); + printf("%2.4f", d); } putchar('\t'); }