aboutsummaryrefslogtreecommitdiff
path: root/codechef
diff options
context:
space:
mode:
Diffstat (limited to 'codechef')
-rwxr-xr-xcodechef/chefinsq.py15
-rw-r--r--codechef/fibeasy.c23
-rwxr-xr-xcodechef/gdsub.py18
3 files changed, 56 insertions, 0 deletions
diff --git a/codechef/chefinsq.py b/codechef/chefinsq.py
new file mode 100755
index 0000000..04fd5ef
--- /dev/null
+++ b/codechef/chefinsq.py
@@ -0,0 +1,15 @@
+#!/usr/bin/env python3
+from bisect import bisect_left, bisect_right
+from functools import reduce
+from math import factorial
+
+
+def c(n, r):
+ return reduce(int.__mul__, range(n, n - r, -1), 1) // factorial(r)
+
+
+for t in range(int(input())):
+ n, k = map(int, input().split())
+ a = sorted(map(int, input().split()))
+ l, r = bisect_left(a, a[k - 1]), bisect_right(a, a[k - 1])
+ print(c(r - l, min(k - l, r - k)))
diff --git a/codechef/fibeasy.c b/codechef/fibeasy.c
new file mode 100644
index 0000000..d5309a5
--- /dev/null
+++ b/codechef/fibeasy.c
@@ -0,0 +1,23 @@
+#include <stdio.h>
+
+const char LAST[] = "0923";
+
+int main()
+{
+ int t, c;
+ long n;
+
+ scanf("%d", &t);
+ while (t--) {
+ scanf("%ld", &n);
+ if (n == 2 || n == 3) {
+ puts("1");
+ continue;
+ }
+
+ for (c = 0; n >>= 1; c++);
+ printf("%c\n", LAST[c % 4]);
+ }
+
+ return 0;
+}
diff --git a/codechef/gdsub.py b/codechef/gdsub.py
new file mode 100755
index 0000000..56c6a84
--- /dev/null
+++ b/codechef/gdsub.py
@@ -0,0 +1,18 @@
+#!/usr/bin/env python3
+from collections import Counter
+from functools import reduce
+
+def mod(n): return n % 1_000_000_007
+
+def cha1n(iterable):
+ yield 1
+ yield from iterable
+
+n, k = map(int, input().split())
+counts = tuple(Counter(map(int, input().split())).values())
+if len(counts) <= k:
+ print(reduce(lambda x, y: mod(x * (y+1)), counts, 1))
+else:
+ s = [0] * k
+ for c in counts: s = [mod(x + y*c) for x, y in zip(s, cha1n(s))]
+ print(mod(sum(s, 1)))