给定整数L , S1和S2 ,其中L是以米为单位的圆形轨道的长度, S1和S2是两个人从同一起点开始在给定轨道上沿相同方向移动的速度(以公里/小时为单位)。任务是找到以下内容:
- 他们第一次见面之后的时间。
- 在起点开会的时间。
例子:
Input: L = 30, S1 = 5, S2 = 2
Output: Met first time after 10 hrs
Met at starting point after 30 hrs
Input: L = 10, S1 = 1, S2 = 2
Output: Met first time after 10 hrs
Met at starting point after 10 hrs
方法:
- 用于计算他们第一次见面的时间。
- 首先,计算相对速度,即S1 – S2 。
- 然后,使用时间=距离/相对速度的公式。
- 为了计算他们在起点再次相遇的时间。
- 首先,使用时间=轨道长度/速度来计算时间,即T1和T2 ,分别代表两个轨道覆盖1圈圆形轨道所需的时间。
- 然后计算LCM,以了解它们在起点再次相遇的时间。
下面是上述方法的实现:
C++
// C++ implementation of above approach
#include
using namespace std;
// Function to return the time when both the
// persons will meet at the starting point
int startingPoint(int Length, int Speed1, int Speed2)
{
int result1 = 0, result2 = 0;
// Time to cover 1 round by both
int time1 = Length / Speed1;
int time2 = Length / Speed2;
result1 = __gcd(time1, time2);
// Finding LCM to get the meeting point
result2 = time1 * time2 / (result1);
return result2;
}
// Function to return the time when both
// the persons will meet for the first time
float firstTime(int Length, int Speed1, int Speed2)
{
float result = 0;
int relativeSpeed = abs(Speed1 - Speed2);
result = ((float)Length / relativeSpeed);
return result;
}
// Driver Code
int main()
{
int L = 30, S1 = 5, S2 = 2;
// Calling function
float first_Time = firstTime(L, S1, S2);
int starting_Point = startingPoint(L, S1, S2);
cout << "Met first time after "
<< first_Time << " hrs" << endl;
cout << "Met at starting point after "
<< starting_Point << " hrs" << endl;
return 0;
}
Java
// Java implementation of above approach
public class GFG {
// Function to return the time when both the
// persons will meet at the starting point
static int startingPoint(int Length, int Speed1, int Speed2) {
int result1 = 0, result2 = 0;
// Time to cover 1 round by both
int time1 = Length / Speed1;
int time2 = Length / Speed2;
result1 = __gcd(time1, time2);
// Finding LCM to get the meeting point
result2 = time1 * time2 / (result1);
return result2;
}
static int __gcd(int a, int b) {
if (b == 0) {
return a;
}
return __gcd(b, a % b);
}
// Function to return the time when both
// the persons will meet for the first time
static float firstTime(int Length, int Speed1, int Speed2) {
float result = 0;
int relativeSpeed = Math.abs(Speed1 - Speed2);
result = ((float) Length / relativeSpeed);
return result;
}
// Driver Code
public static void main(String[] args) {
int L = 30, S1 = 5, S2 = 2;
// Calling function
float first_Time = firstTime(L, S1, S2);
int starting_Point = startingPoint(L, S1, S2);
System.out.println("Met first time after "
+ first_Time + " hrs");
System.out.println("Met at starting point after "
+ starting_Point + " hrs");
}
}
Python3
# Python 3 implementation of
# above approach
# import gcd() from math lib
from math import gcd
# Function to return the time when both the
# persons will meet at the starting point
def startingPoint(Length, Speed1, Speed2) :
result1 = 0
result2 = 0
# Time to cover 1 round by both
time1 = Length // Speed1
time2 = Length // Speed2
result1 = gcd(time1, time2)
# Finding LCM to get the meeting point
result2 = time1 * time2 // (result1)
return result2
# Function to return the time when both
# the persons will meet for the first time
def firstTime(Length, Speed1, Speed2) :
result = 0
relativeSpeed = abs(Speed1 - Speed2)
result = Length / relativeSpeed
return result
# Driver Code
if __name__ == "__main__" :
L = 30
S1 = 5
S2 = 2
# Calling function
first_Time = firstTime(L, S1, S2)
starting_Point = startingPoint(L, S1, S2)
print("Met first time after", first_Time, "hrs")
print("Met at starting point after",
starting_Point, "hrs")
# This code is contributed by Ryuga
C#
// C# implementation of above approach
using System;
public class GFG {
// Function to return the time when both the
// persons will meet at the starting point
static int startingPoint(int Length, int Speed1, int Speed2) {
int result1 = 0, result2 = 0;
// Time to cover 1 round by both
int time1 = Length / Speed1;
int time2 = Length / Speed2;
result1 = __gcd(time1, time2);
// Finding LCM to get the meeting point
result2 = time1 * time2 / (result1);
return result2;
}
static int __gcd(int a, int b) {
if (b == 0) {
return a;
}
return __gcd(b, a % b);
}
// Function to return the time when both
// the persons will meet for the first time
static float firstTime(int Length, int Speed1, int Speed2) {
float result = 0;
int relativeSpeed = Math.Abs(Speed1 - Speed2);
result = ((float) Length / relativeSpeed);
return result;
}
// Driver Code
public static void Main() {
int L = 30, S1 = 5, S2 = 2;
// Calling function
float first_Time = firstTime(L, S1, S2);
int starting_Point = startingPoint(L, S1, S2);
Console.WriteLine("Met first time after "
+ first_Time + " hrs");
Console.WriteLine("Met at starting point after "
+ starting_Point + " hrs");
}
}
/*This code is contributed by 29AjayKumar*/
PHP
Javascript
输出:
Met first time after 10 hrs
Met at starting point after 30 hrs