Check if the array has an element which is equal to product of remaining elements - GeeksforGeeks

25 Aug, 2021
Given an array of N elements, the task is to check if the array has an element which is equal to the product of all the remaining elements.
Examples: 
Input: arr[] = {1, 2, 12, 3, 2}
Output: YES
12 is the product of all the remaining elements 
i.e. 1 * 2 * 3 * 2 = 12

Input: arr[] = {1, 2, 3}
Output: NO
Method-1:  
First, take the product of all the element of the array.Now traverse the whole array again.For any element a[i] check if it is equal to the product of all elements divided by that element.Print Yes if at least one such element is found.
First, take the product of all the element of the array.
Now traverse the whole array again.
For any element a[i] check if it is equal to the product of all elements divided by that element.
Print Yes if at least one such element is found.
Below is the implementation of the above approach:  
C++
Java
Python3
C#
PHP
Javascript
// C++ implementation of the above approach#include <bits/stdc++.h>using namespace std; // Function to Check if the array// has an element which is equal to// product of all the remaining elementsbool CheckArray(int arr[], int n){    int prod = 1;     // Calculate the product of all the elements    for (int i = 0; i < n; ++i)        prod *= arr[i];     // Return true if any such element is found    for (int i = 0; i < n; ++i)        if (arr[i] == prod / arr[i])            return true;     // If no element is found    return false;} int main(){    int arr[] = { 1, 2, 12, 3, 2 };    int n = sizeof(arr) / sizeof(arr[0]);     if (CheckArray(arr, n))        cout << "YES";     else        cout << "NO";     return 0;}
// Java implementation of the above approach import java.io.*; class GFG {  // Function to Check if the array// has an element which is equal to// product of all the remaining elementsstatic boolean CheckArray(int arr[], int n){    int prod = 1;     // Calculate the product of all the elements    for (int i = 0; i < n; ++i)        prod *= arr[i];     // Return true if any such element is found    for (int i = 0; i < n; ++i)        if (arr[i] == prod / arr[i])            return true;     // If no element is found    return false;}       public static void main (String[] args) {            int arr[] = { 1, 2, 12, 3, 2 };    int n =arr.length;     if (CheckArray(arr, n))        System.out.println("YES");     else        System.out.println("NO");     }}// This code is contributed by shs..
# Python 3 implementation of the above approach # Function to Check if the array# has an element which is equal to# product of all the remaining elementsdef CheckArray(arr, n):    prod = 1     # Calculate the product of all    # the elements    for i in range(0, n, 1):        prod *= arr[i]     # Return true if any such element    # is found    for i in range(0, n, 1):        if (arr[i] == prod / arr[i]):            return True     # If no element is found    return False # Driver codeif __name__ == '__main__':    arr = [1, 2, 12, 3, 2]    n = len(arr)     if (CheckArray(arr, n)):        print("YES")     else:        print("NO") # This code is contributed by# Surendra_Gangwar
// C# implementation of the above approachclass GFG{// Function to Check if the array// has an element which is equal to// product of all the remaining elementsstatic bool CheckArray(int[] arr, int n){    int prod = 1;     // Calculate the product of    // all the elements    for (int i = 0; i < n; ++i)        prod *= arr[i];     // Return true if any such    // element is found    for (int i = 0; i < n; ++i)        if (arr[i] == prod / arr[i])            return true;     // If no element is found    return false;} // Driver Codepublic static void Main (){    int[] arr = new int[] { 1, 2, 12, 3, 2 };    int n = arr.Length;         if (CheckArray(arr, n))        System.Console.WriteLine("YES");         else        System.Console.WriteLine("NO");}} // This code is contributed by mits
<?php// PHP implementation of the above approach // Function to Check if the array// has an element which is equal to// product of all the remaining elementsfunction CheckArray($arr, $n){    $prod = 1;     // Calculate the product of    // all the elements    for ($i = 0; $i < $n; ++$i)        $prod *= $arr[$i];     // Return true if any such element    // is found    for ($i = 0; $i < $n; ++$i)        if ($arr[$i] == $prod / $arr[$i])            return true;     // If no element is found    return false;} // Driver Code$arr = array(1, 2, 12, 3, 2);$n = sizeof($arr); if (CheckArray($arr, $n))    echo "YES";else    echo "NO"; // This code is contributed// by Akanksha Rai
<script>// Java script implementation of the above approach // Function to Check if the array// has an element which is equal to// product of all the remaining elementsfunction CheckArray(arr,n){    let prod = 1;     // Calculate the product of all the elements    for (let i = 0; i < n; ++i)        prod *= arr[i];     // Return true if any such element is found    for (let i = 0; i < n; ++i)        if (arr[i] == prod / arr[i])            return true;     // If no element is found    return false;}       let arr = [ 1, 2, 12, 3, 2 ];    let n =arr.length;     if (CheckArray(arr, n))        document.write("YES");     else        document.write("NO"); // This code is contributed by sravan kumar Gottumukkala</script>
YES
 
Method-2: The approach is to find the product of all the elements of the array and check if it is a perfect square or not. If it is a perfect square then check if the square root of the product exists in the array or not. If exists then print Yes else print No.
According to the problem statement, a * b = N where b is the product of all the remaining elements of the array except a i.e arr[i] And it is also mentioned that find the index such that a = b. So, it simply means that a*a = N i.e. N is a perfect square. and a is its square root.
Below is the implementation of the above approach:  
C++
Java
Python3
C#
PHP
Javascript
// C++ implementation of the above approach#include <bits/stdc++.h>using namespace std; // Function to Check if the array// has an element which is equal to// product of all the remaining elementsbool CheckArray(int arr[], int n){    int prod = 1;     // Storing frequency in map    unordered_set<int> freq;     // Calculate the product of all the elements    for (int i = 0; i < n; ++i) {        freq.insert(arr[i]);        prod *= arr[i];    }     int root = sqrt(prod);     // If the prod is a perfect square    if (root * root == prod)         // then check if its square root        // exist in the array or not        if (freq.find(root) != freq.end())            return true;     return false;} // Driver codeint main(){    int arr[] = { 1, 2, 12, 3, 2 };    int n = sizeof(arr) / sizeof(arr[0]);     if (CheckArray(arr, n))        cout << "YES";     else        cout << "NO";     return 0;}
import java.util.ArrayList; // Java implementation of the above approachclass GFG { // Function to Check if the array// has an element which is equal to// product of all the remaining elements    static boolean CheckArray(int arr[], int n) {        int prod = 1;         // Storing frequency in map        ArrayList<Integer> freq = new ArrayList<>();         // Calculate the product of all the elements        for (int i = 0; i < n; ++i) {            freq.add(arr[i]);            prod *= arr[i];        }         int root = (int) Math.sqrt(prod);         // If the prod is a perfect square        if (root * root == prod) // then check if its square root        // exist in the array or not        {            if (freq.contains(root) & freq.lastIndexOf(root) != (freq.size())) {                return true;            }        }         return false;    }// Driver code     public static void main(String[] args) {         int arr[] = {1, 2, 12, 3, 2};        int n = arr.length;         if (CheckArray(arr, n)) {            System.out.println("YES");        } else {            System.out.println("NO");        }     }}//This code is contributed by 29AjayKumar
# Python3 implementation of the above approach  import math # Function to Check if the array# has an element which is equal to# product of all the remaining elementsdef CheckArray( arr, n):     prod = 1      # Storing frequency in map    freq = []      # Calculate the product of all the elements    for i in range(n) :        freq.append(arr[i])        prod *= arr[i]      root = math.sqrt(prod)      # If the prod is a perfect square    if (root * root == prod):          # then check if its square root        # exist in the array or not        if root in freq:            return True      return False  # Driver codeif __name__ == "__main__":     arr = [1, 2, 12, 3, 2 ]    n = len(arr)      if (CheckArray(arr, n)):        print ("YES")      else:        print ("NO")
// C# implementation of above approachusing System;using System.Collections; class GFG{     // Function to Check if the array    // has an element which is equal to    // product of all the remaining elements    static bool CheckArray(int []arr, int n)    {        int prod = 1;         // Storing frequency in map        ArrayList freq = new ArrayList();         // Calculate the product of all the elements        for (int i = 0; i < n; ++i)        {            freq.Add(arr[i]);            prod *= arr[i];        }         int root = (int) Math.Sqrt(prod);         // If the prod is a perfect square        if (root * root == prod) // then check if its square root        // exist in the array or not        {            if (freq.Contains(root) & freq.LastIndexOf(root) != (freq.Count))            {                return true;            }        }         return false;    }         // Driver code    public static void Main()    {         int []arr = {1, 2, 12, 3, 2};        int n = arr.Length;         if (CheckArray(arr, n))        {            Console.WriteLine("YES");        }        else        {            Console.WriteLine("NO");        }    }} /* This code contributed by PrinciRaj1992 */
<?php// PHP implementation of the above approach // Function to Check if the array// has an element which is equal to// product of all the remaining elementsfunction CheckArray($arr, $n){    $prod = 1;     // Storing frequency in map    $freq = array();     // Calculate the product of all the elements    for ($i = 0; $i < $n; ++$i)    {        array_push($freq, $arr[$i]);        $prod *= $arr[$i];    }    $freq = array_unique($freq);    $root = (int)(sqrt($prod));     // If the prod is a perfect square    if ($root * $root == $prod)         // then check if its square root        // exist in the array or not        if (in_array($root, $freq))            return true;     return false;} // Driver code$arr = array( 1, 2, 12, 3, 2 );$n = count($arr); if (CheckArray($arr, $n))    echo "YES"; else    echo "NO"; // This code is contributed by mits?>
<script> // JavaScript implementation of// the above approach     // Function to Check if the array// has an element which is equal to// product of all the remaining elements    function CheckArray(arr,n)    {        let prod = 1;          // Storing frequency in map        let freq = [];          // Calculate the product of all the elements        for (let i = 0; i < n; ++i) {            freq.push(arr[i]);            prod *= arr[i];        }          let root =  Math.floor(Math.sqrt(prod));          // If the prod is a perfect square        // then check if its square root        if (root * root == prod)        // exist in the array or not        {            if (freq.includes(root) &            freq.lastIndexOf(root) != (freq.length))            {                return true;            }        }          return false;    }         // Driver code    let arr=[1, 2, 12, 3, 2];    let n = arr.length;         if (CheckArray(arr, n)) {        document.write("YES");    } else {        document.write("NO");    }  // This code is contributed by avanitrachhadiya2155 </script>
YES
 
Shashank12
Mithun Kumar
Akanksha_Rai
SURENDRA_GANGWAR
29AjayKumar
ukasp
princiraj1992
sravankumar8128
avanitrachhadiya2155
akshaysingh98088
cpp-unordered_set
Technical Scripter 2018
Arrays
Mathematical
Technical Scripter
Arrays
Mathematical
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Introduction to Arrays
Multidimensional Arrays in Java
Linear Search
Linked List vs Array
Given an array A[] and a number x, check for pair in A[] with sum as x (aka Two Sum)
Program for Fibonacci numbers
Write a program to print all permutations of a given string
Set in C++ Standard Template Library (STL)
C++ Data Types
Coin Change | DP-7