diff options
author | Nguyễn Gia Phong <vn.mcsinyx@gmail.com> | 2018-10-30 13:22:36 +0700 |
---|---|---|
committer | Nguyễn Gia Phong <vn.mcsinyx@gmail.com> | 2018-10-30 13:22:36 +0700 |
commit | d5b549d83292f6573ef3715c17f1d57a41918fb7 (patch) | |
tree | 1db9293b28bcba3fdb226306a02c449d35f0590c /codechef/maxprodu.c | |
parent | 4c5ed94087a691ce47882786aea64f7b5bf3c130 (diff) | |
download | cp-d5b549d83292f6573ef3715c17f1d57a41918fb7.tar.gz |
Fouracesinarow
Diffstat (limited to 'codechef/maxprodu.c')
-rw-r--r-- | codechef/maxprodu.c | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/codechef/maxprodu.c b/codechef/maxprodu.c new file mode 100644 index 0000000..f9ebfff --- /dev/null +++ b/codechef/maxprodu.c @@ -0,0 +1,38 @@ +#include <stdio.h> + +int main() +{ + long long n, k, si, m, l, r, i, result; + int t; + scanf("%d\n", &t); + + while (t--) { + scanf("%lld %lld\n", &n, &k); + si = (k - 1) * k / 2; + m = (n - si) / k; + if (m < 1) { + puts("-1"); + continue; + } else if (m == 1) { + puts("0"); + continue; + } + + r = n - si - m * k; + l = k - r; + result = 1; + + for (i = 0; l--; i++) { + result = result * (m + i) % 1000000007; + result = result * (m + i - 1) % 1000000007; + } + for (; r--; i++) { + result = result * (m + i) % 1000000007; + result = result * (m + i + 1) % 1000000007; + } + + printf("%lld\n", result); + } + + return 0; +} |