Длина гоночной трассы в зависимости от окончательного расстояния между участниками
Если заданы три целых числа A, B и C , задача состоит в том, чтобы найти длину гоночной трассы, если 3 гонщика участвуют в гонке, в которой первый гонщик опережает второго гонщика на A метров, первый гонщик опережает третьего гонщика на B метров. а второй гонщик опережает третьего на C метров.
Примеры:
Input: A = 11, B = 90, C = 80
Output: 880Input: A = 10, B = 20, C = 12
Output: 60
Подход :
Пусть 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 longint32_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 approachimport 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 trackdef findlength(a, b, c): # return the answer return c * a / (c + a - b)a = 11b = 90c = 80print (findlength(a, b, c)) |
C #
// C# program for the above approachusing 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 Codelet 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 и многому другому, см. Полный курс подготовки к собеседованию .