Open In App

Find the ratio of number of elements in two Arrays from their individual and combined average

Last Updated : 13 Mar, 2022
Improve
Improve
Like Article
Like
Save
Share
Report

Given the average of elements in two arrays as ‘a’ and ‘b’ respectively, and their combined average as ‘c’, the task is to find the ratio of the number of elements in two array.
Examples: 
 

Input:  a = 2, b = 8, c = 5
Output: 1:1

Input: a = 4, b = 10, c = 6
Output: 2:1


 


Approach: 
 

  • Let the number of elements in two arrays are respectively x and y.
  • So sum of all elements in the combined array is (a*x + b*y)    .
  • Total number of elements in the combined array is (x + y)    and let f = x / y    .
  • So, (a*x + b*y) / (x + y) = c
    (a*f + b) / (f + 1) = c
    f * (c - a) = b - c
    So, f = (b - c) / (c - a)
  • Here f is our required answer.


Below is the implementation of the above Approach: 
 

C++

// C++ program to Find the Ratio
// of number of Elements in two Arrays
// from their individual and combined Average
 
#include <bits/stdc++.h>
using namespace std;
 
// C++ function to find the ratio
// of number of array elements
void FindRatio(int a, int b, int c)
{
 
    int up = abs(b - c);
    int down = abs(c - a);
 
    // calculating GCD of them
    int g = __gcd(up, down);
 
    // make neumarator and
    // denominator coprime
    up /= g;
    down /= g;
 
    cout << up << ":"
         << down << "\n";
}
 
// Driver Code
int main()
{
 
    int a = 4, b = 10, c = 6;
 
    FindRatio(a, b, c);
 
    return 0;
}

                    

Java

// Java program to Find the Ratio
// of number of Elements in two Arrays
// from their individual and combined Average
class GFG
{
    static int gcd(int a, int b)
    {
        if (b == 0)
            return a;
        return gcd(b, a % b);
         
    }
     
    // function to find the ratio
    // of number of array elements
    static void FindRatio(int a, int b, int c)
    {
        int up = Math.abs(b - c);
        int down = Math.abs(c - a);
     
        // calculating GCD of them
        int g = gcd(up, down);
     
        // make neumarator and
        // denominator coprime
        up /= g;
        down /= g;
     
        System.out.println(up + ":" + down);
    }
     
    // Driver Code
    public static void main (String[] args)
    {
        int a = 4, b = 10, c = 6;
     
        FindRatio(a, b, c);
    }
}
 
// This code is contributed by AnkitRai01

                    

Python3

# Python3 program to Find the Ratio
# of number of Elements in two Arrays
# from their individual and combined Average
from math import gcd
 
# function to find the ratio
# of number of array elements
def FindRatio(a, b, c):
 
    up = abs(b - c)
    down = abs(c - a)
 
    # calculating GCD of them
    g = gcd(up, down)
 
    # make neumarator and
    # denominator coprime
    up //= g
    down //= g
 
    print(up,":", down)
 
# Driver Code
a = 4
b = 10
c = 6
 
FindRatio(a, b, c)
 
# This code is contributed by Mohit Kumar

                    

C#

// C# program to Find the Ratio
// of number of Elements in two Arrays
// from their individual and combined Average
using System;
 
class GFG
{
    static int gcd(int a, int b)
    {
        if (b == 0)
            return a;
        return gcd(b, a % b);
         
    }
     
    // function to find the ratio
    // of number of array elements
    static void FindRatio(int a, int b, int c)
    {
        int up = Math.Abs(b - c);
        int down = Math.Abs(c - a);
     
        // calculating GCD of them
        int g = gcd(up, down);
     
        // make neumarator and
        // denominator coprime
        up /= g;
        down /= g;
     
        Console.WriteLine(up + ":" + down);
    }
     
    // Driver Code
    public static void Main (String []args)
    {
        int a = 4, b = 10, c = 6;
     
        FindRatio(a, b, c);
    }
}
 
// This code is contributed by Arnab Kundu

                    

Javascript

<script>
// Javascript program to Find the Ratio
// of number of Elements in two Arrays
// from their individual and combined Average
 
// Javascript function to find the ratio
// of number of array elements
function FindRatio(a, b, c)
{
 
    let up = Math.abs(b - c);
    let down = Math.abs(c - a);
 
    // calculating GCD of them
    let g = gcd(up, down);
 
    // make neumarator and
    // denominator coprime
    up = parseInt(up / g);
    down = parseInt(down / g);
 
    document.write(up + ":"
         + down + "<br>");
}
 
function gcd(a, b)
{
  if (b == 0)
      return a;
  return gcd(b, a % b);
 
}
 
// Driver Code
 
    let a = 4, b = 10, c = 6;
 
    FindRatio(a, b, c);
 
</script>

                    

Output: 
2:1

 

Time Complexity: O(log( min(abs(b-c),abs(c-a)) ) )

Auxiliary Space: O(1)



Like Article
Suggest improvement
Share your thoughts in the comments

Similar Reads