Open In App

# Check if a pair with given product exists in a Matrix

Given an NxM matrix and a product K. The task is to check if a pair with the given product exists in the matrix or not.

Examples

Input: mat[N][M] = {{1, 2, 3, 4},
{5, 6, 7, 8},
{9, 10, 11, 12},
{13, 14, 15, 16}};
K = 42
Output: YES

Input: mat[N][M] = {{1, 2, 3, 4},
{5, 6, 7, 8}};
K = 150
Output: NO

Approach:

• Take a hash to store all elements of the matrix in the hash.
• Start traversing through the matrix, and while traversing check if the current element of the matrix is divisible by the given product and when the product K is divided by the current element, the dividend obtained is also present in the hash.
That is,
(k % mat[i][j] == 0) && (mp[k / mat[i][j]] > 0)
• If present, then return true, else insert current elements into the hash.
• If all elements of the matrix are traversed and no pair is found, return false.

Below is the implementation of the above approach:

## C++

 // CPP code to check for pair with given product// exists in the matrix or not#include using namespace std; #define N 4#define M 4 // Function to check if a pair with given// product exists in the matrixbool isPairWithProductK(int mat[N][M], int k){    // hash to store elements    unordered_set s;     // looping through elements    // if present in the matrix    // return true, else push    // the element in matrix    for (int i = 0; i < N; i++) {        for (int j = 0; j < M; j++) {            if ((k % mat[i][j] == 0) && (s.find(k / mat[i][j]) != s.end())) {                return true;            }            else {                s.insert(mat[i][j]);            }        }    }     return false;} // Driver codeint main(){    // Input matrix    int mat[N][M] = { { 1, 2, 3, 4 },                      { 5, 6, 7, 8 },                      { 9, 10, 11, 12 },                      { 13, 14, 15, 16 } };     // given product    int k = 42;     if (isPairWithProductK(mat, k)) {        cout << "YES" << endl;    }    else        cout << "NO" << endl;     return 0;}

## Java

 // Java code to check for pair with given product// exists in the matrix or notimport java.util.*;class GFG{     static final int N=4;     static final int M=4;          // Function to check if a pair with given    // product exists in the matrix    static boolean isPairWithProductK(int mat[][], int k)    {        // hash to store elements        Set s=new HashSet();             // looping through elements        // if present in the matrix        // return true, else push        // the element in matrix        for (int i = 0; i < N; i++) {            for (int j = 0; j < M; j++) {                if ((k % mat[i][j] == 0) && s.contains(k / mat[i][j])) {                    return true;                }                else {                    s.add(mat[i][j]);                }            }        }             return false;    }         // Driver code    public static void main(String [] args)    {             // Input matrix        int mat[][] = { { 1, 2, 3, 4 },                        { 5, 6, 7, 8 },                        { 9, 10, 11, 12 },                        { 13, 14, 15, 16 } };             // given product        int k = 42;             if (isPairWithProductK(mat, k)) {            System.out.println("YES");        }        else            System.out.println("NO");                  }         // This code is contributed by ihritik}

## Python 3

 # Python 3 code to check for pair with# given product exists in the matrix or notN = 4M = 4 # Function to check if a pair with# given product exists in the matrixdef isPairWithProductK(mat, k):     # hash to store elements    s = []     # looping through elements if present    # in the matrix return true, else push    # the element in matrix    for i in range(N) :        for j in range(M):            if ((k % mat[i][j] == 0) and                (k // mat[i][j]) in s):                return True                         else :                s.append(mat[i][j])     return False # Driver codeif __name__ == "__main__":         # Input matrix    mat = [[ 1, 2, 3, 4 ],           [ 5, 6, 7, 8 ],           [ 9, 10, 11, 12 ],           [ 13, 14, 15, 16 ]]     # given product    k = 42     if (isPairWithProductK(mat, k)):        print( "YES")         else:        print("NO") # This code is contributed by ita_c

## C#

 // C# code to check for pair with given product// exists in the matrix or notusing System;using System.Collections.Generic; class GFG{    static readonly int N = 4;    static readonly int M = 4;         // Function to check if a pair with given    // product exists in the matrix    static bool isPairWithProductK(int [,]mat, int k)    {        // hash to store elements        HashSet s = new HashSet();             // looping through elements        // if present in the matrix        // return true, else push        // the element in matrix        for (int i = 0; i < N; i++)        {            for (int j = 0; j < M; j++)            {                if ((k % mat[i, j] == 0) &&                    s.Contains(k / mat[i, j]))                {                    return true;                }                else                {                    s.Add(mat[i, j]);                }            }        }             return false;    }         // Driver code    public static void Main()    {             // Input matrix        int [,]mat = { { 1, 2, 3, 4 },                        { 5, 6, 7, 8 },                        { 9, 10, 11, 12 },                        { 13, 14, 15, 16 } };             // given product        int k = 42;             if (isPairWithProductK(mat, k))        {            Console.WriteLine("YES");        }        else            Console.WriteLine("NO");    }} // This code has been contributed// by PrinciRaj1992

## Javascript



Output

YES

Time Complexity: O(N*M)
Auxiliary Space: O(N*M)