Проверьте, возможно ли сделать сумму массива равной произведению массива, заменив ровно один элемент
Дан массив 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)