aboutsummaryrefslogtreecommitdiff
path: root/wip/053-combinatoric-selections.c
diff options
context:
space:
mode:
authorCharles <sircharlesaze@gmail.com>2019-08-11 22:41:34 +0200
committerCharles <sircharlesaze@gmail.com>2019-08-11 22:41:34 +0200
commit1879caa1dd80cb11dd62403663917ad4bf7cc68e (patch)
treeea41c6dd83a9f9bbfe0a891237674342de92d533 /wip/053-combinatoric-selections.c
parent6b16d921543a62d880171791d39bcc58560785fa (diff)
downloadproject_euler-1879caa1dd80cb11dd62403663917ad4bf7cc68e.tar.gz
project_euler-1879caa1dd80cb11dd62403663917ad4bf7cc68e.tar.bz2
project_euler-1879caa1dd80cb11dd62403663917ad4bf7cc68e.zip
rename all file with 3 zero padding
Diffstat (limited to 'wip/053-combinatoric-selections.c')
-rw-r--r--wip/053-combinatoric-selections.c43
1 files changed, 43 insertions, 0 deletions
diff --git a/wip/053-combinatoric-selections.c b/wip/053-combinatoric-selections.c
new file mode 100644
index 0000000..9006f5a
--- /dev/null
+++ b/wip/053-combinatoric-selections.c
@@ -0,0 +1,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;
+}