在这个问题上,我们给了四个整数,分别表示比赛中每个人的起点和起点。我们的任务是找出两个人在跳相同次数后是否见过面。
问题描述: 在这里,我们需要检查从点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