Длина гоночной трассы в зависимости от окончательного расстояния между участниками

Опубликовано: 2 Января, 2022

Если заданы три целых числа A, B и C , задача состоит в том, чтобы найти длину гоночной трассы, если 3 гонщика участвуют в гонке, в которой первый гонщик опережает второго гонщика на A метров, первый гонщик опережает третьего гонщика на B метров. а второй гонщик опережает третьего на C метров.

Примеры:

Input: A = 11, B = 90, C = 80 
Output: 880

Input: A = 10, B = 20, C = 12 
Output: 60

Рекомендуется: сначала попробуйте свой подход в {IDE}, прежде чем переходить к решению.

Подход :
Пусть X - длина гоночной трассы.

Случай 1: К моменту, когда Первый гонщик финишировал в гонке, расстояния, пройденные всеми тремя гонщиками, составляют:
Первый = X, Второй = X - A, третий = X - B
Пусть время, затраченное Первым гонщиком на финиш, будет T 1 .

Случай 2: К тому времени, когда Второй гонщик завершил гонку, оставшиеся 2 гонщика пройдут следующие дистанции:
Второй = X, Третий = X - C
Пусть время, затраченное Вторым гонщиком на финиш гонки, равно Т 2 .

Соотношение скоростей Второго и Третьего гонщиков будет постоянным как в случае 1, так и в случае 2, что подразумевает:

=> ((X – A) / T1) / ((X – B) / T1) = (X / T2) / ((X – C) / T2
=> (X – A) / (X – B) = (X) / (X – C) 
=> X2 – A*X – C*X + A*C = X2 – B*X 
=> A*C = (C + A – B)*X 
=> X = A*C / (C + A – B)

Ниже представлена реализация указанной выше программы:

C ++

// C++ Program for the above approach
#include <bits/stdc++.h>
using namespace std;
#define int long long
int32_t main()
{
int A = 11;
int B = 90;
int C = 80;
int ans = C * A;
ans = ans / (C + A - B);
cout << ans << endl;
}

Джава

// Java Program for the
// above approach
import java.util.Scanner;
class GFG {
public static void main(String args[])
{
int a = 11 ;
int b = 90 ;
int c = 80 ;
System.out.println(c * a
/ (c + a - b));
}
}

Python3

# Python3 Program for the
# above approach
# Function to get the length
# of the race track
def findlength(a, b, c):
# return the answer
return c * a / (c + a - b)
a = 11
b = 90
c = 80
print (findlength(a, b, c))

C #

// C# program for the above approach
using System;
class GFG{
static void Main()
{
int a = 11;
int b = 90;
int c = 80;
Console.WriteLine(c * a / (c + a - b));
}
}
// This code is contributed by divyeshrabadiya07

Javascript

<script>
// JavaScript program for the above approach
// Driver Code
let a = 11;
let b = 90;
let c = 80;
document.write(c * a / (c + a - b));
// This code is contributed by sanjoy_62
</script>
Выход:
 880

Примечание: это вопрос интервью, задаваемый в POSTMAN (SDE Internship).

Вниманию читателя! Не прекращайте учиться сейчас. Получите все важные математические концепции для соревновательного программирования с курсом Essential Maths for CP по доступной для студентов цене. Чтобы завершить подготовку от изучения языка к DS Algo и многому другому, см. Полный курс подготовки к собеседованию .