Tiempo mínimo requerido para llenar una cisterna usando N tuberías

Dado el tiempo requerido por un total de N+1 tuberías donde se utilizan N tuberías para llenar la Cisterna y se utiliza una sola tubería para vaciar la Cisterna. La tarea es calcular la cantidad de tiempo en que se llenará la cisterna si todas las tuberías N+1 se abren juntas.

Ejemplos

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 

Acercarse: 

  • Si una tubería1 puede llenar una cisterna en ‘n’ horas, entonces en 1 hora, la tubería1 podrá llenar ‘1/n’ cisterna.
  • De manera similar, si una tubería2 puede llenar una cisterna en ‘m’ horas, entonces, en una hora, la tubería2 podrá llenar ‘1/m’ de cisterna.
  • Pronto…. para otras tuberías.

Entonces, el trabajo total realizado para llenar una cisterna con N tubos en 1 hora es 

1/n + 1/m + 1/p…… + 1/z
Donde n, m, p….., z son el número de horas que tarda cada tubería respectivamente.

El resultado de la expresión anterior será la parte del trabajo realizado por todas las tuberías juntas en 1 hora, digamos a/b .
Para el cálculo el tiempo que se tarda en llenar la cisterna será b/a .

Considere un ejemplo de dos tuberías: 

Tiempo que tarda la 1.ª tubería en llenar la cisterna = 12 horas 
Tiempo que tarda la 2.ª tubería en llenar la cisterna = 14 horas 
Tiempo que tarda la 3.ª tubería en vaciar la cisterna = 30 horas
Trabajo realizado por la 1.ª tubería en 1 hora = 1/12 
Trabajo realizado por la 2.ª tubería en 1 hora = 1/14 
Trabajo realizado por la 3.ª tubería en 1 hora = – (1/30) mientras vacía la tubería. 
Entonces, el trabajo total realizado por todas las tuberías en 1 hora es 
=> ( 1/12 + 1/ 14 ) – (1/30) 
=> ((7 + 6 ) / (84)) – (1/30) 
= > ((13) / (84)) – (1 / 30) 
=> 51 / 420
Entonces, para Llenar la cisterna el tiempo requerido será de 420 / 51 es decir 8 horas Aprox .

A continuación se muestra la implementación del enfoque anterior:  

C++

// C++ implementation of above approach
#include <bits/stdc++.h>
using namespace std;
 
// Function to calculate the time
float 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 Code
int 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 approach
import java.io.*;
 
class GFG
{
     
// Function to calculate the time
static 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 Code
public 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 time
def 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 Code
if __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 approach
using System;
 
class GFG
{
     
// Function to calculate the time
static 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 Code
public 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.

PHP

<?php
// PHP implementation of above approach
 
// Function to calculate the time
function T_ime($arr, $n, $Emptypipe)
{
    $fill = 0;
    for ($i = 0; $i < $n; $i++)
        $fill += 1 / $arr[$i];
 
    $fill = $fill - (1 / $Emptypipe);
 
    return 1 / $fill;
}
 
// Driver Code
$arr = array( 12, 14 );
$Emptypipe = 30;
$n = count($arr);
 
echo (int)T_ime($arr, $n,
                $Emptypipe) . " Hours";
 
// This code is contributed
// by inder_verma.
?>

Javascript

<script>
 
// Javascript implementation of above approach
 
// Function to calculate the time
function Time(arr, n, Emptypipe)
{
    var fill = 0;
    for(var i = 0; i < n; i++)
        fill += 1 / arr[i];
 
    fill = fill - (1 / Emptypipe);
 
    return 1 / fill;
}
 
// Driver Code
var arr = [ 12, 14 ];
var Emptypipe = 30;
var n = arr.length;
 
document.write(Math.floor(
    Time(arr, n, Emptypipe)) + " Hours");
     
// This code is contributed by itsok
 
</script>
Producción: 

8 Hours

 

Publicación traducida automáticamente

Artículo escrito por Naman_Garg y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *