Given an array of Number and two values **A** and **B**, The task is to check the following Conditions:

- If two numbers are present in the array or not.
- If Yes, then their Arithmetic Mean and Harmonic Mean are also present in the same array or not.
- If all conditions are satisfied, Print the Geometric Mean of the two numbers.

The respective means of the numbers can be formulated as follows:

**Examples:**

Input:arr[] = {1.0, 2.0, 2.5, 3.0, 4.0, 4.5, 5.0, 6.0}, A = 3, B = 6.Output :GM = 4.24Explanation:

A = 3, B = 6 are present in the array.

AM = 4.5, HM = 4 are also present in the array.

So, GM = 4.24

Input:arr = {1.0, 2.0, 2.5, 3.0, 4.0, 4.5, 5.0, 6.0}, A = 4, B = 6.Output:AM and HM not found

**Approach:**

- The idea is to use
**Hashing**, using which we can simply store the array elements in a Hash container and use constant time**O(1)**operations to find and track the numbers and their means. Finally, the Geometric Mean is computed if all the conditions are satisfied by observing the simple relation**AM * HM = GM**.^{2} - A step-wise implementation of the above approach is as follows:
- A Hash container is defined to store the array elements.
- The arithmetic and harmonic means are calculated based on the formulae.
- Simple conditional statements are used to find the elements in the Hash container in constant time.
- Provided, all conditions are satisfied, the GM is calculated from above relation.

Below is the implementation of the above approach:

## C++

`// C++ program to check if two numbers ` `// are present in an array then their ` `// AM and HM are also present. Finally, ` `// find the GM of the numbers ` `#include <bits/stdc++.h> ` `using` `namespace` `std; ` ` ` `// Function to find the Arithmetic Mean ` `// of 2 numbers ` `float` `ArithmeticMean(` `float` `A, ` `float` `B) ` `{ ` ` ` `return` `(A + B) / 2; ` `} ` ` ` `// Function to find the Harmonic Mean ` `// of 2 numbers ` `float` `HarmonicMean(` `float` `A, ` `float` `B) ` `{ ` ` ` `return` `(2 * A * B) / (A + B); ` `} ` ` ` `// Following function checks and computes the ` `// desired results based on the means ` `void` `CheckArithmeticHarmonic(` `float` `arr[], ` ` ` `float` `A, ` ` ` `float` `B, ` `int` `N) ` `{ ` ` ` ` ` `// Calculate means ` ` ` `float` `AM = ArithmeticMean(A, B); ` ` ` `float` `HM = HarmonicMean(A, B); ` ` ` ` ` `// Hash container (Set) to store elements ` ` ` `unordered_set<` `float` `> Hash; ` ` ` ` ` `// Insertion of array elements in the Set ` ` ` `for` `(` `int` `i = 0; i < N; i++) ` ` ` `{ ` ` ` `Hash.insert(arr[i]); ` ` ` `} ` ` ` ` ` `// Conditionals to check if numbers ` ` ` `// are present in array by Hashing ` ` ` `if` `(Hash.find(A) != Hash.end() ` ` ` `&& Hash.find(B) != Hash.end()) { ` ` ` ` ` `// Conditionals to check if the AM and HM ` ` ` `// of the numbers are present in array ` ` ` `if` `(Hash.find(AM) != Hash.end() ` ` ` `&& Hash.find(HM) != Hash.end()) { ` ` ` ` ` `// If all conditions are satisfied, ` ` ` `// the Geometric Mean is calculated ` ` ` `cout << ` `"GM = "` `; ` ` ` `printf` `(` `"%0.2f"` `, ` `sqrt` `(AM * HM)); ` ` ` `} ` ` ` `else` ` ` `{ ` ` ` `// If numbers are found but the ` ` ` `// respective AM and HM are not ` ` ` `// found in the array ` ` ` `cout << ` `"AM and HM not found"` `; ` ` ` `} ` ` ` `} ` ` ` `else` ` ` `{ ` ` ` `// If none of the conditions are satisfied ` ` ` `cout << ` `"Numbers not found"` `; ` ` ` `} ` `} ` ` ` `int` `main() ` `{ ` ` ` ` ` `float` `arr[] = {1.0, 2.0, 2.5, 3.0, 4.0, ` ` ` `4.5, 5.0, 6.0}; ` ` ` ` ` `int` `N = ` `sizeof` `(arr)/` `sizeof` `(arr[0]); ` ` ` `float` `A = 3.0; ` ` ` `float` `B = 6.0; ` ` ` `CheckArithmeticHarmonic(arr, A, B, N); ` ` ` `return` `0; ` `} ` |

*chevron_right*

*filter_none*

## Java

`// Java program to check if two numbers ` `// are present in an array then their ` `// AM and HM are also present. Finally, ` `// find the GM of the numbers ` `import` `java.util.*; ` ` ` `class` `GFG{ ` ` ` `// Function to find the Arithmetic Mean ` `// of 2 numbers ` `static` `Double ArithmeticMean(Double A, Double B) ` `{ ` ` ` `return` `(A + B) / ` `2` `; ` `} ` ` ` `// Function to find the Harmonic Mean ` `// of 2 numbers ` `static` `Double HarmonicMean(Double A, Double B) ` `{ ` ` ` `return` `(` `2` `* A * B) / (A + B); ` `} ` ` ` `// Following function checks and computes the ` `// desired results based on the means ` `static` `void` `CheckArithmeticHarmonic(Double arr[], ` ` ` `Double A, ` ` ` `Double B, ` `int` `N) ` `{ ` ` ` ` ` `// Calculate means ` ` ` `Double AM = ArithmeticMean(A, B); ` ` ` `Double HM = HarmonicMean(A, B); ` ` ` ` ` `// Hash container (HashMap) to store elements ` ` ` `HashMap<Double, ` ` ` `Integer> Hash = ` `new` `HashMap<Double, ` ` ` `Integer>(); ` ` ` ` ` `// Insertion of array elements in the Set ` ` ` `for` `(` `int` `i = ` `0` `; i < N; i++) ` ` ` `{ ` ` ` `Hash.put(arr[i], ` `1` `); ` ` ` `} ` ` ` ` ` `// Conditionals to check if numbers ` ` ` `// are present in array by Hashing ` ` ` `if` `(Hash.get(A) != ` `0` `&& ` ` ` `Hash.get(B) != ` `0` `) ` ` ` `{ ` ` ` ` ` `// Conditionals to check if the AM and HM ` ` ` `// of the numbers are present in array ` ` ` `if` `(Hash.get(AM) != ` `0` `&& ` ` ` `Hash.get(HM) != ` `0` `) ` ` ` `{ ` ` ` ` ` `// If all conditions are satisfied, ` ` ` `// the Geometric Mean is calculated ` ` ` `System.out.print(` `"GM = "` `); ` ` ` `System.out.format(` `"%.2f"` `, Math.sqrt(AM * HM)); ` ` ` `} ` ` ` `else` ` ` `{ ` ` ` ` ` `// If numbers are found but the ` ` ` `// respective AM and HM are not ` ` ` `// found in the array ` ` ` `System.out.print(` `"AM and HM not found"` `); ` ` ` `} ` ` ` `} ` ` ` `else` ` ` `{ ` ` ` ` ` `// If none of the conditions are satisfied ` ` ` `System.out.print(` `"numbers not found"` `); ` ` ` `} ` `} ` ` ` `// Driver code ` `public` `static` `void` `main(String args[]) ` `{ ` ` ` `Double arr[] = { ` `1.0` `, ` `2.0` `, ` `2.5` `, ` `3.0` `, ` ` ` `4.0` `, ` `4.5` `, ` `5.0` `, ` `6.0` `}; ` ` ` ` ` `int` `N = (arr.length); ` ` ` `Double A = ` `3.0` `; ` ` ` `Double B = ` `6.0` `; ` ` ` ` ` `CheckArithmeticHarmonic(arr, A, B, N); ` `} ` `} ` ` ` `// This code is contributed by Stream_Cipher ` |

*chevron_right*

*filter_none*

## Python3

`# Python3 program to check if two numbers ` `# are present in an array then their ` `# AM and HM are also present. Finally, ` `# find the GM of the numbers ` `from` `math ` `import` `sqrt ` ` ` `# Function to find the arithmetic mean ` `# of 2 numbers ` `def` `ArithmeticMean(A, B): ` ` ` `return` `(A ` `+` `B) ` `/` `2` ` ` `# Function to find the harmonic mean ` `# of 2 numbers ` `def` `HarmonicMean(A, B): ` ` ` `return` `(` `2` `*` `A ` `*` `B) ` `/` `(A ` `+` `B) ` ` ` `# Following function checks and computes the ` `# desired results based on the means ` `def` `CheckArithmeticHarmonic(arr, A, B, N): ` ` ` ` ` `# Calculate means ` ` ` `AM ` `=` `ArithmeticMean(A, B) ` ` ` `HM ` `=` `HarmonicMean(A, B) ` ` ` ` ` `# Hash container (set) to store elements ` ` ` `Hash` `=` `set` `() ` ` ` ` ` `# Insertion of array elements in the set ` ` ` `for` `i ` `in` `range` `(N): ` ` ` `Hash` `.add(arr[i]) ` ` ` ` ` `# Conditionals to check if numbers ` ` ` `# are present in array by Hashing ` ` ` `if` `(A ` `in` `Hash` `and` `B ` `in` `Hash` `): ` ` ` ` ` `# Conditionals to check if the AM and HM ` ` ` `# of the numbers are present in array ` ` ` `if` `(AM ` `in` `Hash` `and` `HM ` `in` `Hash` `): ` ` ` ` ` `# If all conditions are satisfied, ` ` ` `# the Geometric Mean is calculated ` ` ` `print` `(` `"GM ="` `, ` `round` `(sqrt(AM ` `*` `HM), ` `2` `)) ` ` ` `else` `: ` ` ` ` ` `# If numbers are found but the ` ` ` `# respective AM and HM are not ` ` ` `# found in the array ` ` ` `print` `(` `"AM and HM not found"` `) ` ` ` `else` `: ` ` ` ` ` `# If none of the conditions are satisfied ` ` ` `print` `(` `"Numbers not found"` `) ` ` ` `# Driver Code ` `if` `__name__ ` `=` `=` `'__main__'` `: ` ` ` ` ` `arr ` `=` `[ ` `1.0` `, ` `2.0` `, ` `2.5` `, ` `3.0` `, ` ` ` `4.0` `, ` `4.5` `, ` `5.0` `, ` `6.0` `] ` ` ` `N ` `=` `len` `(arr) ` ` ` `A ` `=` `3.0` ` ` `B ` `=` `6.0` ` ` ` ` `CheckArithmeticHarmonic(arr, A, B, N) ` ` ` `# This code is contributed by Samarth ` |

*chevron_right*

*filter_none*

## C#

`// C# program to check if two numbers ` `// are present in an array then their ` `// AM and HM are also present. Finally, ` `// find the GM of the numbers ` `using` `System; ` `using` `System.Collections.Generic; ` ` ` `class` `GFG{ ` ` ` `// Function to find the Arithmetic Mean ` `// of 2 numbers ` `static` `Double ArithmeticMean(Double A, Double B) ` `{ ` ` ` `return` `(A + B) / 2; ` `} ` ` ` `// Function to find the Harmonic Mean ` `// of 2 numbers ` `static` `Double HarmonicMean(Double A, Double B) ` `{ ` ` ` `return` `(2 * A * B) / (A + B); ` `} ` ` ` `// Following function checks and computes the ` `// desired results based on the means ` `static` `void` `CheckArithmeticHarmonic(Double []arr, ` ` ` `Double A, ` ` ` `Double B, ` `int` `N) ` `{ ` ` ` ` ` `// Calculate means ` ` ` `Double AM = ArithmeticMean(A, B); ` ` ` `Double HM = HarmonicMean(A, B); ` ` ` ` ` `// Hash container (Set) to store elements ` ` ` `// HashMap<Double,int> Hash = new HashMap<Double,int>(); ` ` ` `Dictionary<Double, ` ` ` `int` `> Hash = ` `new` `Dictionary<Double, ` ` ` `int` `>(); ` ` ` ` ` `// Insertion of array elements in the Set ` ` ` `for` `(` `int` `i = 0; i < N; i++) ` ` ` `{ ` ` ` `Hash[arr[i]] = 1; ` ` ` `} ` ` ` ` ` `// Conditionals to check if numbers ` ` ` `// are present in array by Hashing ` ` ` `if` `(Hash.ContainsKey(A) && ` ` ` `Hash.ContainsKey(B)) ` ` ` `{ ` ` ` ` ` `// Conditionals to check if the AM and HM ` ` ` `// of the numbers are present in array ` ` ` `if` `(Hash.ContainsKey(AM) && ` ` ` `Hash.ContainsKey(HM)) ` ` ` `{ ` ` ` ` ` `// If all conditions are satisfied, ` ` ` `// the Geometric Mean is calculated ` ` ` `Console.Write(` `"GM = "` `); ` ` ` `Console.Write(Math.Round( ` ` ` `Math.Sqrt(AM * HM), 2)); ` ` ` `} ` ` ` `else` ` ` `{ ` ` ` ` ` `// If numbers are found but the ` ` ` `// respective AM and HM are not ` ` ` `// found in the array ` ` ` `Console.WriteLine(` `"AM and HM not found"` `); ` ` ` `} ` ` ` `} ` ` ` `else` ` ` `{ ` ` ` ` ` `// If none of the conditions are satisfied ` ` ` `Console.WriteLine(` `"numbers not found"` `); ` ` ` `} ` `} ` ` ` `// Driver code ` `public` `static` `void` `Main() ` `{ ` ` ` `Double []arr = { 1.0, 2.0, 2.5, 3.0, ` ` ` `4.0, 4.5, 5.0, 6.0 }; ` ` ` ` ` `int` `N = (arr.Length); ` ` ` `Double A = 3.0; ` ` ` `Double B = 6.0; ` ` ` ` ` `CheckArithmeticHarmonic(arr, A, B, N); ` `} ` `} ` ` ` `// This code is contributed by Stream_Cipher ` |

*chevron_right*

*filter_none*

**Output:**

GM = 4.24

**Complexity Analysis:**

The overall time complexity of the above program is based on the initial iteration of the array elements at user-defined input. The find operations associated with the Set are all O(1) constant-time operations. Therefore, the complexity of the program is **O(N)** where N is the size of the array.

## Recommended Posts:

- Count the number of sub-arrays such that the average of elements present in the sub-array is greater than that not present in the sub-array
- Choose two elements from the given array such that their sum is not present in any of the arrays
- Find two numbers from their sum and XOR
- Replace the odd positioned elements with their cubes and even positioned elements with their squares
- Count of pairs in a given range with sum of their product and sum equal to their concatenated number
- Find two numbers made up of a given digit such that their difference is divisible by N
- Find two numbers such that difference of their squares equal to N
- Find two distinct numbers such that their LCM lies in given range
- Count pairs from 1 to N such that their Sum is divisible by their XOR
- Possible values of Q such that, for any value of R, their product is equal to X times their sum
- Maximize count of equal numbers in Array of numbers upto N by replacing pairs with their sum
- Find if a molecule can be formed from 3 atoms using their valence numbers
- Find the numbers present at Kth level of a Fibonacci Binary Tree
- Maximum consecutive numbers present in an array
- Sum of all palindrome numbers present in an Array
- Sum of all perfect numbers present in an array
- Sum of all mersenne numbers present in an array
- Divide the two given numbers by their common divisors
- Split N natural numbers into two sets having GCD of their sums greater than 1
- Find elements which are present in first array and not in second

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.