Skip to content
Related Articles

Related Articles

Count pairs in array such that one element is power of another
  • Last Updated : 20 Mar, 2020

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 <bits/stdc++.h>
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[0]);
    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


Output:

2

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.




My Personal Notes arrow_drop_up
Recommended Articles
Page :