# Count pairs in array such that one element is power of another

• Last Updated : 21 Dec, 2021

Given an array arr[], the task is to count the pairs in the array such that one element is the power of another in each pair.
Examples:

```Input: arr[] = {16, 2, 3, 9}
Output: 2
The 2 pairs are (16, 2) and (3, 9)

Input: arr[] = {2, 3, 5, 7}
Output: 0```

Approach:

• After taking the array as input, first we need to find out all the possible pairs in that array.
• So, find out the pairs from the array
• Then for each pair, check whether an element is a power of another. If it is, then increase the required count by one.
• When all the pairs have been checked, return or print the count of such pair.

Below is the implementation of the above approach:

## C++

 `// C++ program to count pairs in array``// such that one element is power of another` `#include ``using` `namespace` `std;` `// Function to check if given number number y``// is power of x``bool` `isPower(``int` `x, ``int` `y)``{``    ``// log function to calculate value``    ``int` `res1 = ``log``(y) / ``log``(x);``    ``double` `res2 = ``log``(y) / ``log``(x);` `    ``// compare to the result1``    ``// or result2 both are equal``    ``return` `(res1 == res2);``}` `// Function to find pairs from array``int` `countPower(``int` `arr[], ``int` `n)``{``    ``int` `res = 0;` `    ``// Iterate through all pairs``    ``for` `(``int` `i = 0; i < n; i++)``        ``for` `(``int` `j = i + 1; j < n; j++)` `            ``// Increment count if one is``            ``// the power of other``            ``if` `(isPower(arr[i], arr[j])``                ``|| isPower(arr[j], arr[i]))``                ``res++;` `    ``return` `res;``}` `// Driver code``int` `main()``{``    ``int` `a[] = { 16, 2, 3, 9 };``    ``int` `n = ``sizeof``(a) / ``sizeof``(a);``    ``cout << countPower(a, n);``    ``return` `0;``}`

## Java

 `// Java program to count pairs in array``// such that one element is power of another` `class` `GFG``{` `    ``// Function to check if given number number y``    ``// is power of x``    ``static` `boolean` `isPower(``int` `x, ``int` `y)``    ``{``        ``// log function to calculate value``        ``int` `res1 = (``int``)(Math.log(y) / Math.log(x));``        ``double` `res2 = Math.log(y) / Math.log(x);``    ` `        ``// compare to the result1``        ``// or result2 both are equal``        ``return` `(res1 == res2);``    ``}``    ` `    ``// Function to find pairs from array``    ``static` `int` `countPower(``int` `arr[], ``int` `n)``    ``{``        ``int` `res = ``0``;``    ` `        ``// Iterate through all pairs``        ``for` `(``int` `i = ``0``; i < n; i++)``            ``for` `(``int` `j = i + ``1``; j < n; j++)``    ` `                ``// Increment count if one is``                ``// the power of other``                ``if` `(isPower(arr[i], arr[j])``                    ``|| isPower(arr[j], arr[i]))``                    ``res++;``    ` `        ``return` `res;``    ``}``    ` `    ``// Driver code``    ``public` `static` `void` `main (String[] args)``    ``{``        ``int` `a[] = { ``16``, ``2``, ``3``, ``9` `};``        ``int` `n =a.length;``        ``System.out.println(countPower(a, n));``    ``}` `}` `// This code is contributed by AnkitRai01`

## Python3

 `# Python3 program to count pairs in array``# such that one element is power of another` `from` `math ``import` `log` `# Function to check if given number number y``# is power of x``def` `isPower(x, y) :` `    ``# log function to calculate value``    ``res1 ``=` `log(y) ``/``/` `log(x);``    ``res2 ``=` `log(y) ``/` `log(x);``    ` `    ``# compare to the result1``    ``# or result2 both are equal``    ``return` `(res1 ``=``=` `res2);` `# Function to find pairs from array``def` `countPower( arr, n) :``    ` `    ``res ``=` `0``;``    ` `    ``# Iterate through all pairs``    ``for` `i ``in` `range``(n) :``        ``for` `j ``in` `range``(i ``+` `1``, n) :``            ``# Increment count if one is``            ``# the power of other``            ``if` `isPower(arr[i], arr[j]) ``or` `isPower(arr[j], arr[i]) :``                ``res ``+``=` `1``;` `    ``return` `res;` `# Driver code``if` `__name__ ``=``=` `"__main__"` `:``    ` `    ``a ``=` `[ ``16``, ``2``, ``3``, ``9` `];``    ``n ``=` `len``(a);``    ` `    ``print``(countPower(a, n));` `# This code is contributed by AnkitRai01`

## C#

 `// C# program to count pairs in array``// such that one element is power of another` `using` `System;` `public` `class` `GFG``{` `    ``// Function to check if given number number y``    ``// is power of x``    ``static` `bool` `isPower(``int` `x, ``int` `y)``    ``{``        ``// log function to calculate value``        ``int` `res1 = (``int``)(Math.Log(y) / Math.Log(x));``        ``double` `res2 = Math.Log(y) / Math.Log(x);``    ` `        ``// compare to the result1``        ``// or result2 both are equal``        ``return` `(res1 == res2);``    ``}``    ` `    ``// Function to find pairs from array``    ``static` `int` `countPower(``int` `[]arr, ``int` `n)``    ``{``        ``int` `res = 0;``    ` `        ``// Iterate through all pairs``        ``for` `(``int` `i = 0; i < n; i++)``            ``for` `(``int` `j = i + 1; j < n; j++)``    ` `                ``// Increment count if one is``                ``// the power of other``                ``if` `(isPower(arr[i], arr[j])``                    ``|| isPower(arr[j], arr[i]))``                    ``res++;``    ` `        ``return` `res;``    ``}``    ` `    ``// Driver code``    ``public` `static` `void` `Main ()``    ``{``        ``int` `[]a = { 16, 2, 3, 9 };``        ``int` `n =a.Length;``        ``Console.WriteLine(countPower(a, n));``    ``}` `}` `// This code is contributed by AnkitRai01`

## Javascript

 ``

Output:

`2`

Time Complexity: O(n2)

Auxiliary Space: O(1)

My Personal Notes arrow_drop_up