Подсчет массивов максимальной суммы N-размера с элементами в диапазоне [0, 2^K – 1] и побитовым И, равным 0

Опубликовано: 22 Сентября, 2022

Даны два положительных целых числа N и K , задача состоит в том, чтобы найти количество массивов размера N , таких что каждый элемент массива лежит в диапазоне [0, 2 K – 1] с максимальной суммой элементов массива, имеющих побитовое И всех массивов элементы 0 .

Примеры:

Input: N = 2 K = 2
Output: 4
Explanation:
The possible arrays with maximum sum having the Bitwise AND of all array element as 0 {0, 3}, {3, 0}, {1, 2}, {2, 1}. The count of such array is 4.

Input: N = 5 K = 6 
Output: 15625 

Подход: Данную проблему можно решить, заметив тот факт, что поскольку побитовое И сгенерированного массива должно быть равно 0 , то для каждого i в диапазоне [0, K – 1] должен быть хотя бы 1 элемент с i бит равен 0 в его двоичном представлении. Следовательно, чтобы максимизировать сумму массива, оптимально иметь ровно 1 элемент с неустановленным i битом.

Следовательно, для каждого из K битов существует N C 1 способов сделать его неустановленным в 1 элементе массива. Следовательно, результирующий счет массива, имеющего максимальную сумму, равен NK.

Ниже приведена реализация подхода:

Временная сложность: O (log K)
Вспомогательное пространство: O(1)