查找两个人是否在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