Проверьте, возможно ли сделать сумму массива равной произведению массива, заменив ровно один элемент

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

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

Примеры:

Input: arr[] = {1, 3, 4}
Output: Yes
Explanation:
Replacing the last element of the array with 2 modifies the array to {1, 3, 2}. The sum of array element  = 6 and  The product of array element is 1*2*3 = 6. Therefore, print Yes.

Input: arr[] = {1, 2, 3}
Output: No

Подход: Данную задачу можно решить, используя следующие математические наблюдения:

Consider the sum of array element as S and product of array element as P and after replacing any array element X with Y the sum and the product of array element must be the same, the equation becomes:

=> S – X + Y = P * Y / X
=> Y = (S – X) / (P / X – 1)

Из приведенных выше наблюдений идея состоит в том, чтобы найти сумму и произведение элементов массива как S и P , а затем выполнить итерацию по элементу массива (скажем, X ) и найти значение Y , используя приведенное выше уравнение, и если существует какой-либо элемент массива значение Y как полное неотрицательное целое число, затем выведите Yes . В противном случае выведите Нет .

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

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