使用 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 次查看

开启你的 职业生涯

通过完成课程获得认证

开始
广告