使用 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
广告