给定三个整数A,B和C ,如果三个赛车手参加比赛,其中第一个赛车手以A米击败第二个赛车手,第一个赛车手以B米击败第三个赛车手,则任务是查找赛道的长度第二名选手以C米的成绩击败第三名。
例子:
Input: A = 11, B = 90, C = 80
Output: 880
Input: A = 10, B = 20, C = 12
Output: 60
方法 :
令X为赛道的长度。
情况1:当第一个赛车手完成比赛时,所有3个赛车手所覆盖的距离为:
第一= X,第二= X – A,第三= X – B
让第一名赛车手完成比赛所需的时间为T 1 。
情况2:当第二名赛车手完成比赛时,其余2名赛车手所覆盖的距离为:
第二= X,第三= X – C
让第二名赛车手完成比赛所需的时间为T 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
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
// 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
输出:
880
注意:这是在POSTMAN(SDE实习)上询问的面试问题