Проблема дня GFG [ 01 января 2023 ]
Для заданного числа n найдите количество всех двоичных последовательностей длины 2n, таких, что сумма первых n битов равна сумме последних n битов.
Ответ может быть очень большим. Итак, вы должны вернуть ответ по модулю 10 ^ 9 + 7.
Пример:
Input: n = 2 Output: 6 Explanation: There are 6 sequences of length 2*n, the sequences are 0101, 0110, 1010, 1001, 0000 and 1111.
Пример:
Input: n = 1 Output: 2 Explanation: There are 2 sequence of length 2*n, the sequence are 00 and 11.
Ваша задача
Вам не нужно ничего читать или печатать. Ваша задача состоит в том, чтобы завершить функцию compute_value(), которая принимает n в качестве входного параметра и возвращает количество всех двоичных последовательностей длины 2*n, таких что сумма первых n бит равна сумме последних n бит по модулю 10^9 + 7.
Ожидаемая временная сложность:O(n * log(n))
Ожидаемая пространственная сложность:O(1)
Решение
class Solution { public long power(long x, long y, long p) { long res = 1l; x = x % p; while (y > 0) { if (y % 2 == 1) res = (res * x) % p; y = y >> 1; x = (x * x) % p; } return res; } public long modInverse(long n, long p) { return power(n, p - 2, p); } public int compute_value(int n) { // code here long ans = 1l; long mod = (long)(Math.pow(10, 9) + 7l); long compute = 1l; for(int i=0;i<n;i++) { compute = (compute%mod * (long)(n-i)%mod) % mod; compute = (compute%mod * modInverse(i+1, mod)%mod) % mod; ans = (ans%mod + (compute%mod*compute%mod)%mod) % mod; } return (int)(ans%mod); } }
Временная сложность: O(N*logN), потому что мы вычисляем мощность на каждой итерации, которая занимает O(logN) времени.
Пространственная сложность: O(1)
Присоединяйтесь к моему каналу Telegram, чтобы получить все решения GFG POD.
https://t.me/sole_master_coding
Спасибо всем!!!
С Новым годом!!!