📌  相关文章
📜  两个人在圆形跑道上见面所花费的时间

📅  最后修改于: 2021-04-23 16:05:36             🧑  作者: Mango

给定整数LS1S2 ,其中L是以米为单位的圆形轨道的长度, S1S2是两个人从同一起点开始在给定轨道上沿相同方向移动的速度(以公里/小时为单位)。任务是找到以下内容:

  • 他们第一次见面之后的时间。
  • 在起点开会的时间。

例子:

方法:

  • 用于计算他们第一次见面的时间。
    • 首先,计算相对速度,即S1 – S2
    • 然后,使用时间=距离/相对速度的公式。
  • 为了计算他们在起点再次相遇的时间。
    • 首先,使用时间=轨道长度/速度来计算时间,即T1T2 ,分别代表两个轨道覆盖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