Número de horas después de las cuales la segunda persona se adelanta a la primera si viaja a una velocidad dada

Dados tres enteros A , B y K . Inicialmente, la primera persona se adelantó a la segunda por K kms. En cada hora, la primera persona avanza A kms y la segunda persona avanza B kms. La tarea es imprimir el número de horas después de las cuales la segunda persona cruza la primera. Si es imposible hacerlo, imprima -1

Ejemplos: 

Entrada: A = 4, B = 5, K = 1 
Salida:
Inicialmente, la primera persona se adelantó 1 km. 
Después de la primera hora, la primera y la segunda persona están en el mismo lugar. 
Después de la segunda hora, la primera persona se adelanta a la primera en 1 km.

Entrada: A = 6, B = 5, K = 1 
Salida: -1 
 

Un enfoque ingenuo es verificar linealmente cada hora e imprimir la n-ésima hora cuando la segunda persona se adelanta a la primera. 
Un enfoque eficiente es resolver el problema matemáticamente. El número de horas será K / (B – A) + 1 cuando la segunda persona se adelante a la primera. Ya que necesitas recorrer K kms, por lo tanto el tiempo tomado será K / (B – A) donde B – A es la velocidad de la segunda persona con respecto a la primera persona. Si A ≥ B entonces no es posible que la segunda persona se cruce con la primera. 

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

C++

// C++ implementation of the above approach
#include <bits/stdc++.h>
using namespace std;
 
// Function to return the number of
// hours for the second person to move ahead
int findHours(int a, int b, int k)
{
    if (a >= b)
        return -1;
 
    // Time taken to equalize
    int time = k / (b - a);
 
    // Time taken to move ahead
    time = time + 1;
 
    return time;
}
 
// Driver code
int main()
{
    int a = 4, b = 5, k = 1;
    cout << findHours(a, b, k);
    return 0;
}

Java

// Java implementation of the above approach
import java.io.*;
 
class GFG
{
     
// Function to return the number of
// hours for the second person to move ahead
static int findHours(int a, int b, int k)
{
    if (a >= b)
        return -1;
 
    // Time taken to equalize
    int time = k / (b - a);
 
    // Time taken to move ahead
    time = time + 1;
 
    return time;
}
 
// Driver code
public static void main (String[] args)
{
 
        int a = 4, b = 5, k = 1;
        System.out.println (findHours(a, b, k));
}
}
 
// The code is contributed by ajit..@23

Python3

# Python3 implementation of the above approach
 
# Function to return the number of
# hours for the second person to move ahead
def findHours(a, b, k):
    if (a >= b):
        return -1
 
    # Time taken to equalize
    time = k // (b - a)
 
    # Time taken to move ahead
    time = time + 1
 
    return time
 
 
# Driver code
 
a = 4
b = 5
k = 1
print(findHours(a, b, k))
 
# This code is contributed by mohit kumar 29

C#

// C# implementation of the above approach
using System;
 
class GFG
{
         
// Function to return the number of
// hours for the second person to move ahead
static int findHours(int a, int b, int k)
{
    if (a >= b)
        return -1;
 
    // Time taken to equalize
    int time = k / (b - a);
 
    // Time taken to move ahead
    time = time + 1;
 
    return time;
}
 
// Driver code
static public void Main ()
{
    int a = 4, b = 5, k = 1;
    Console.Write(findHours(a, b, k));
}
}
 
// The code is contributed by ajit.

Javascript

<script>
 
// Javascript implementation of the above approach
 
// Function to return the number of hours
// for the second person to move ahead
function findHours(a, b, k)
{
    if (a >= b)
        return -1;
 
    // Time taken to equalize
    let time = k / (b - a);
 
    // Time taken to move ahead
    time = time + 1;
 
    return time;
}
 
// Driver code
let a = 4, b = 5, k = 1;
 
document.write(findHours(a, b, k));
 
// This code is contributed by Mayank Tyagi
 
</script>
Producción: 

2

 

Complejidad Temporal: O(1), ya que existe una operación aritmética básica que requiere un tiempo constante.
Espacio Auxiliar: O(1), ya que no se ha ocupado ningún espacio extra.

Publicación traducida automáticamente

Artículo escrito por Striver 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 *