# Write a program for “Number of Pairs” ?

**Number of Pairs Requirement:**

Given two arrays **X** and **Y** of positive integers, find the number of pairs that satisfies this condition **x ^{y} > y^{x}** where x is an element from X or array 1 and y is an element from Y or array 2.

Input: X[] = [2 4] Y[] = [1 3]Output: 3Explanation: All the possible pairs are for x^{y}> y^{x}are: 2^{1}> 1^{2}[2 > 1 => true], 2^{3}> 3^{2}[8 > 9 => false], 4^{1}> 1^{4}[4 > 1 => true], 4^{3}> 3^{4}[64 > 81 => false] So the output shoule be => 2 [only true condition values]

**Number of Pairs Logic:**

The logic is to keep the counter variable to count/increment on the condition which satisfies the x^{y} > y^{x}

**Programmatic steps:**

- Have nested for loops to complete the iteration for every possible values in both the arrays.
- Calculate the Math.pow(x, y) and Math.pow(y,x)
- Increment the counter variable which satisifies only this condition [Math.pow(x, y) > Math.pow(y,x)] and return the same.

**Optimised or Improved solution would be:**

To store the already evaluated results to apply the true/false directly instead of executing the complete Math.pow logics.

For Example, if you have x array as {1,2,1,3} and y array as {2,7,9}, here since you have number 1 as two times in the x array, now if we have the results stored in collections like map then duplicate numbers can be skipped for the whole logic execution and can directly be applied with the true / false solutions.

That is something, you can try and post in the comments section, otherwise later sometime I will post that as well.

**Number of Pairs** – **Program [Java] Source code:**

package com.ngdeveloper; public class NumberOfParis { public static void main(String[] args) { int[] x = {2, 4}; int[] y = {1, 3}; System.out.println(numberOfPairs(x,y)); } static int numberOfPairs(int[] x, int[] y){ int counter =0; for(int outer=0;outer<x.length;outer++){ for(int inner=0;inner<y.length;inner++){ if(Math.pow(x[outer], y[inner]) > Math.pow(y[inner], x[outer])){ counter++; } } } return counter; } }

**Output:**

2