📌  相关文章
📜  检查数组中的元素是否等于其余元素的乘积

📅  最后修改于: 2021-04-29 14:08:22             🧑  作者: Mango

给定一个由N个元素组成的数组,任务是检查该数组是否具有等于所有其余元素的乘积的元素。

例子:

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

方法1:

  1. 首先,取数组所有元素的乘积。
  2. 现在再次遍历整个数组。
  3. 对于任何元素a [i],检查其是否等于所有元素除以该元素的乘积。
  4. 如果找到至少一个这样的元素,则打印是。

下面是上述方法的实现:

C++
// C++ implementation of the above approach
#include 
using namespace std;
  
// Function to Check if the array
// has an element which is equal to
// product of all the remaining elements
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;
}
  
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
// 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 elements
static 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..


Python3
# 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 elements
def 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 code
if __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#
// C# implementation of the above approach
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;
  
    // 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 Code
public 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


C++
// C++ implementation of the above approach
#include 
using namespace std;
  
// Function to Check if the array
// has an element which is equal to
// product of all the remaining elements
bool CheckArray(int arr[], int n)
{
    int prod = 1;
  
    // Storing frequency in map
    unordered_set 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 code
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
import java.util.ArrayList;
  
// Java implementation of the above approach
class 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 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
# 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 elements
def 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 code
if __name__ == "__main__":
  
    arr = [1, 2, 12, 3, 2 ]
    n = len(arr)
   
    if (CheckArray(arr, n)):
        print ("YES")
   
    else:
        print ("NO")


C#
// C# implemenatation of above approach 
using 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


输出:
YES

方法2:方法是找到数组所有元素的乘积,然后检查它是否为完美的正方形。如果它是一个理想的平方,则检查乘积的平方根是否存在于数组中。如果存在,则打印“是”,否则打印“否”。

下面是上述方法的实现:

C++

// C++ implementation of the above approach
#include 
using namespace std;
  
// Function to Check if the array
// has an element which is equal to
// product of all the remaining elements
bool CheckArray(int arr[], int n)
{
    int prod = 1;
  
    // Storing frequency in map
    unordered_set 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 code
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

import java.util.ArrayList;
  
// Java implementation of the above approach
class 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 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

# 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 elements
def 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 code
if __name__ == "__main__":
  
    arr = [1, 2, 12, 3, 2 ]
    n = len(arr)
   
    if (CheckArray(arr, n)):
        print ("YES")
   
    else:
        print ("NO")

C#

// C# implemenatation of above approach 
using 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


输出:
YES