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)
{
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<MAX; i++)
+ printf("%d\t%d\t%f\n", i, s(i), f(i)*alpha(i));
+ putchar('\n');
+
+ printf("n0(i-1,i) pomoci alpha(i) a s(i):\n");
+ for (int i=2; i<MAX; i++)
+ printf("%d\t%f\t%f\n", i, f(i-1) * (i*alpha(i-1) + alpha(i-2)), s(i)*(1+1./i));
+ putchar('\n');
+
+ printf("Rekurence pro n0 dava:\n");
for (int i=0; i<MAX; i++)
printf("\t%d", i);
putchar('\n');
}
putchar('\n');
+ printf("Totez podle vzorecku ze Stanleyho:\n");
+ for (int i=0; i<MAX; i++)
+ {
+ printf("%d\t", i);
+ for (int j=0; j<MAX; j++)
+ {
+ if (j >= i)
+ printf("%d", s0(i, j));
+ putchar('\t');
+ }
+ putchar('\n');
+ }
+ putchar('\n');
+
+ printf("Pomery:\n");
for (int i=0; i<MAX; i++)
{
printf("%d\t", i);
{
if (j >= 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');
}