Number of pairs in an array having sum equal to product
Given an array arr[], the task is to find the number of pairs (arr[i], arr[j]) in the array such that arr[i] + arr[j] = arr[i] * arr[j]
Examples:
Input: arr[] = {2, 2, 3, 4, 6}
Output: 1
(2, 2) is the only possible pair as (2 + 2) = (2 * 2) = 4.
Input: arr[] = {1, 2, 3, 4, 5}
Output: 0
Approach: The only possible pairs of integers that will satisfy the given conditions are (0, 0) and (2, 2). So the task now is to count the number of 0s and 2s in the array and store them in cnt0 and cnt2 respectively and then the required count will be (cnt0 * (cnt0 – 1)) / 2 + (cnt2 * (cnt2 – 1)) / 2.
Below is the implementation of the above approach:
C++
#include <bits/stdc++.h>
using namespace std;
int sumEqualProduct( int a[], int n)
{
int zero = 0, two = 0;
for ( int i = 0; i < n; i++) {
if (a[i] == 0) {
zero++;
}
if (a[i] == 2) {
two++;
}
}
int cnt = (zero * (zero - 1)) / 2
+ (two * (two - 1)) / 2;
return cnt;
}
int main()
{
int a[] = { 2, 2, 3, 4, 2, 6 };
int n = sizeof (a) / sizeof (a[0]);
cout << sumEqualProduct(a, n);
return 0;
}
|
Java
import java.util.*;
class GFG {
static int sumEqualProduct( int a[], int n)
{
int zero = 0 , two = 0 ;
for ( int i = 0 ; i < n; i++) {
if (a[i] == 0 ) {
zero++;
}
if (a[i] == 2 ) {
two++;
}
}
int cnt = (zero * (zero - 1 )) / 2
+ (two * (two - 1 )) / 2 ;
return cnt;
}
public static void main(String[] args)
{
int a[] = { 2 , 2 , 3 , 4 , 2 , 6 };
int n = a.length;
System.out.print(sumEqualProduct(a, n));
}
}
|
Python3
def sumEqualProduct(a, n):
zero = 0
two = 0
for i in range (n):
if a[i] = = 0 :
zero + = 1
if a[i] = = 2 :
two + = 1
cnt = (zero * (zero - 1 )) / / 2 + \
(two * (two - 1 )) / / 2
return cnt
a = [ 2 , 2 , 3 , 4 , 2 , 6 ]
n = len (a)
print (sumEqualProduct(a, n))
|
C#
using System;
class GFG
{
static int sumEqualProduct( int []a, int n)
{
int zero = 0, two = 0;
for ( int i = 0; i < n; i++)
{
if (a[i] == 0)
{
zero++;
}
if (a[i] == 2)
{
two++;
}
}
int cnt = (zero * (zero - 1)) / 2 +
(two * (two - 1)) / 2;
return cnt;
}
public static void Main(String[] args)
{
int []a = { 2, 2, 3, 4, 2, 6 };
int n = a.Length;
Console.Write(sumEqualProduct(a, n));
}
}
|
Javascript
<script>
function sumEqualProduct(a, n)
{
var zero = 0, two = 0;
for ( var i = 0; i < n; i++) {
if (a[i] == 0) {
zero++;
}
if (a[i] == 2) {
two++;
}
}
var cnt = (zero * (zero - 1)) / 2
+ (two * (two - 1)) / 2;
return cnt;
}
var a = [2, 2, 3, 4, 2, 6];
var n = a.length;
document.write( sumEqualProduct(a, n));
</script>
|
Time Complexity : O(N)
Auxiliary Space : O(1)
Last Updated :
27 May, 2021
Like Article
Save Article
Share your thoughts in the comments
Please Login to comment...