Count pairs in array such that one element is power of another
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; } |
chevron_right
filter_none
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 |
chevron_right
filter_none
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 |
chevron_right
filter_none
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 |
chevron_right
filter_none
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.