使用 C++ 查詢兩個人在相同跳躍次數後是否相遇


在這個問題中,我們得到四個整數,分別表示比賽中每個人的起點和跳躍次數。我們的任務是找到兩個人是否在相同跳躍次數後相遇

 

問題描述:在這裡,我們需要檢查兩個人分別從 p1 和 p2 點出發,以 j1 和 j2 的跳躍距離跳躍,是否會在路徑上的某個點相遇。

讓我們舉個例子來理解這個問題,

輸入:p1 = 5, p2 = 9, j1 = 4, j2 = 2

輸出:

解釋

第一次跳躍後,p1 = 9, p2 = 11
第二次跳躍後,p1 = 13, p2 = 13

解決方案方法:

為了在某個點相遇,兩個人需要跳躍不同的距離。以下是一些需要滿足的條件,用於檢查兩人是否可能相遇:

如果 p1 > p2,則 s1 需要小於 s2。

並且 ( (p2 - p1) % (s1 - s2) ) == 0

那麼相遇是可能的,否則不可能。

程式說明解決方案的工作原理,

示例

即時演示

#include<iostream>
using namespace std;

bool WillMeet(int p1, int j1, int p2, int j2){

   return ( (j1 > j2 && ( ((p2 - p1) % (j1 - j2)) == 0)) || (j2 > j1 && ( ((p1 - p2) % (j2 - j1)) == 0)) );
}

int main() {
   
   int p1 = 5, j1 = 4, p2 = 9, j2 = 2;
   if(WillMeet(p1, j1, p2, j2))
      cout<<"Both will meet at some point";
   else
      cout<<"Both will not meet at any point";
   
   return 0;
}

輸出

Both will meet at some point

更新於: 2021-01-22

252 次檢視

開啟你的 職業生涯

透過完成課程獲得認證

開始
廣告

© . All rights reserved.