Найдите такой массив, что среднее значение этого и заданного массива вместе равно K

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

Даны два целых числа N , K и массив arr[] , состоящий из положительных целых чисел. Задача состоит в том, чтобы найти любой возможный массив размера N , такой что среднее значение arr[] и массива, который нужно найти вместе, равно K .

Примеры:

Input: arr[] = {1, 5, 6}, N = 4, K = 3
Output: {1, 2, 3, 3}
Explanation: Mean of {1, 5, 6} and {1, 2, 3, 3} together is the following: 
(1 + 5 + 6 + 1 + 2 + 3 + 3) / (3+4) = 3. 
Therefore {1, 2, 3, 3} is possible array to make the mean = 3.

Input: arr[] = {7, 8, 6}, N = 2, K = 3
Output: Not Possible

Подход: Эта проблема может быть решена с помощью простых понятий системы счисления. Предположим, что sumArr будет суммой массива new_arr[] и M будет размером new_arr[] . Тогда в соответствии с усредненной концепцией уравнение можно составить в виде:

(sumArr + X) / (N+M) = K, where X is sum of required array.

X = K * (N + M) – sumArr. 

Следовательно, сумма требуемого массива должна быть равна X , чтобы среднее значение равнялось K. Если X меньше N , то нет возможности сформировать массив.
Самый простой способ сформировать требуемый массив

1, 1, 1, …(M-1 times), X-(M-1)

.

Ниже приведена реализация вышеуказанного подхода:

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