Computer >> Máy Tính >  >> Lập trình >> C ++

Tìm xem có bao giờ hai người gặp nhau sau cùng một số lần nhảy trong C ++ hay không

Trong bài toán này, chúng tôi đưa ra bốn số nguyên biểu thị điểm xuất phát và số lần nhảy được thực hiện bởi mỗi số trong cuộc đua. Nhiệm vụ của chúng ta là tìm xem có bao giờ hai người gặp nhau sau cùng một số lần nhảy hay không.

Mô tả sự cố: Ở đây, chúng ta cần kiểm tra xem hai người bắt đầu tại điểm p1 và p2 thực hiện bước nhảy j1 và j2 sẽ ở một điểm nào đó trong đường dẫn hay không.

Hãy lấy một ví dụ để hiểu vấn đề,

Đầu vào: p1 =5, p2 =9, j1 =4, j2 =2

Đầu ra:

Giải thích:

Sau bước nhảy đầu tiên, p1 =9, p2 =11
Sau lần nhảy thứ hai, p1 =13, p2 =13

Phương pháp tiếp cận giải pháp:

Để gặp nhau vào một thời điểm nào đó, cả hai người sẽ phải nhảy những khoảng cách khác nhau. Dưới đây là một số điều kiện cần phải đáp ứng để kiểm tra xem có thể gặp gỡ mọi người hay không,

Nếu p1> p2 thì s1 cần nhỏ hơn s2.

Và ((p2 - p1)% (s1 - s2)) ==0

Vậy thì cuộc họp có thể xảy ra, nếu không thì không thể.

Chương trình minh họa hoạt động của giải pháp của chúng tôi,

Ví dụ

#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;
}

Đầu ra

Both will meet at some point