Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Kiểm tra hai người có bao giờ gặp nhau sau cùng số nhảy trong C++


Cho 4 số nguyên: vị trí bắt đầu p1, p2 và độ nhảy j1, j2. Nhiệm vụ: kiểm tra hai người có bao giờ gặp nhau sau cùng số lần nhảy.

Mô tả: Kiểm tra xem hai người bắt đầu tại p1, p2 nhảy j1, j2 có bao giờ trùng vị trí không.

Ví dụ:

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

Đầu ra: Yes

Giải thích:

Sau nhảy 1: p1=9, p2=11
Sau nhảy 2: p1=13, p2=13 -> gặp nhau

Phương pháp giải

Điều kiện gặp nhau:

  • Nếu p1 > p2 thì j1 < j2 (người sau nhảy xa hơn).
  • (p2 - p1) % (j1 - j2) == 0 (khoảng cách chia hết cho chênh lệch bước nhảy).

Chương trình minh họa

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

Kết quả

Both will meet at some point