blob: 9006f5aa0c3784fa14a9b6e99d209c62bfe87f7b (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
|
#include <stdio.h>
#include <stdlib.h>
typedef long long unsigned int Natural;
Natural factorial(Natural n)
{
if (n == 1 || n == 0) return 1;
else return n * factorial(n - 1);
}
Natural combination(Natural n, Natural r)
{
if (r > n) exit(1);
Natural num = 0;
/* for (Natural i = 0; i < r - 1; i++) */
/* num *= n - i; */
/* return num / factorial(r); */
/* if (factorial(r) * factorial(n - r) == 0) return 0; */
return (factorial(n) / (factorial(r) * factorial(n - r)));
/* return (factorial(r) * factorial(n - r)); */
}
int main(void)
{
printf("10! = %llu\n", factorial(10));
printf("23! = %llu\n", factorial(23));
printf("(23 - 10)! = %llu\n", factorial(23 - 10));
int counter = 0;
Natural comb = 0, n, r;
/* for (n = 1; n <= 24; n++) */
/* for (r = 1; r <= n; r++) { */
/* comb = combination(n, r); */
/* if (comb > 1000000) { */
/* counter++; */
/* comb = combination(23, 10); */
printf("%llu C %llu = %llu\n", n, r, comb);
/* } */
/* } */
printf("counter = %d", counter);
return 0;
}
|