# Minimum time required to fill a cistern using N pipes

• Last Updated : 13 Apr, 2021

Given the time required by a total of N+1 pipes where N pipes are used to fill the Cistern and a single pipe is used to empty the Cistern. The task is to Calculate the amount of time in which the Cistern will get filled if all the N+1 pipes are opened together.

Examples

Input: n = 2,
pipe1 = 12 hours, pipe2 = 14 hours,
emptypipe = 30 hours
Output: 8 hours

Input: n = 1,
pipe1 = 12 hours
emptypipe = 18 hours
Output: 36 hours

Approach:

• If a pipe1 can fill a cistern in â€˜nâ€™ hours, then in 1 hour, the pipe1 will able to fill â€˜1/nâ€™ Cistern.
• Similarly If a pipe2 can fill a cistern in â€˜mâ€™ hours, then in one hour, the pipe2 will able to fill â€˜1/mâ€™ Cistern.
• So onâ€¦. for other pipes.

So, total work done in filling a Cistern by N pipes in 1 hours is

1/n + 1/m + 1/pâ€¦â€¦ + 1/z
Where n, m, p â€¦.., z are the number of hours taken by each pipes respectively.

The result of the above expression will be the part of work done by all pipes together in 1 hours, letâ€™s say a / b.
To calculate the time taken to fill the cistern will be b / a.

Consider an example of two pipes:

Time taken by 1st pipe to fill the cistern = 12 hours
Time taken by 2nd pipe to fill the cistern = 14 hours
Time taken by 3rd pipe to empty the cistern = 30 hours
Work done by 1st pipe in 1 hour = 1/12
Work done by 2nd pipe in 1 hour = 1/14
Work done by 3nd pipe in 1 hour = – (1/30) as it empty the pipe.
So, total work done by all the pipes in 1 hour is
=> ( 1 / 12 + 1/ 14 ) – (1 / 30)
=> ((7 + 6 ) / (84)) – (1 / 30)
=> ((13) / (84)) – (1 / 30)
=> 51 / 420
So, to Fill the cistern time required will be 420 / 51 i.e 8 hours Approx.

Below is the implementation of above approach:

## C++

 // C++ implementation of above approach#include using namespace std; // Function to calculate the timefloat Time(float arr[], int n, int Emptypipe){     float fill = 0;    for (int i = 0; i < n; i++)        fill += 1 / arr[i];     fill = fill - (1 / (float)Emptypipe);     return 1 / fill;} // Driver Codeint main(){    float arr[] = { 12, 14 };    float Emptypipe = 30;    int n = sizeof(arr) / sizeof(arr[0]);     cout << floor(Time(arr, n, Emptypipe)) << " Hours";     return 0;}

## Java

 // Java implementation of// above approachimport java.io.*; class GFG{     // Function to calculate the timestatic float Time(float arr[], int n,                  float Emptypipe){    float fill = 0;    for (int i = 0; i < n; i++)        fill += 1 / arr[i];     fill = fill - (1 / (float)Emptypipe);     return 1 / fill;} // Driver Codepublic static void main (String[] args){    float arr[] = { 12, 14 };    float Emptypipe = 30;    int n = arr.length;         System.out.println((int)(Time(arr, n,                        Emptypipe)) + " Hours");}} // This code is contributed// by inder_verma.

## Python3

 # Python3 implementation of# above approach # Function to calculate the timedef Time(arr, n, Emptypipe) :     fill = 0    for i in range(0,n) :        fill += (1 / arr[i])     fill = fill - (1 / float(Emptypipe))     return int(1 / fill)  # Driver Codeif __name__=='__main__':    arr = [ 12, 14 ]    Emptypipe = 30    n = len(arr)    print((Time(arr, n, Emptypipe))          , "Hours") # This code is contributed by# Smitha Dinesh Semwal

## C#

 // C# implementation of// above approachusing System; class GFG{     // Function to calculate the timestatic float Time(float []arr, int n,                  float Emptypipe){    float fill = 0;    for (int i = 0; i < n; i++)        fill += 1 / arr[i];     fill = fill - (1 / (float)Emptypipe);     return 1 / fill;} // Driver Codepublic static void Main (){    float []arr = { 12, 14 };    float Emptypipe = 30;    int n = arr.Length;         Console.WriteLine((int)(Time(arr, n,                             Emptypipe)) +                                " Hours");}} // This code is contributed// by inder_verma.



## Javascript


Output:
8 Hours

Attention reader! Don’t stop learning now. Get hold of all the important mathematical concepts for competitive programming with the Essential Maths for CP Course at a student-friendly price. To complete your preparation from learning a language to DS Algo and many more,  please refer Complete Interview Preparation Course.

My Personal Notes arrow_drop_up