Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

ตรวจสอบว่าสองคนจะพบกันได้หรือไม่หลังกระโดดเท่ากันครั้งใน C++

โจทย์

ได้รับจุดเริ่มต้น p1, p2 และระยะกระโดด j1, j2 ทางเราต้อง ตรวจสอบว่าสองคนจะพบกันได้หรือไม่หลังจากกระโดดจำนวนครั้งเท่ากัน

ตัวอย่าง

Input: p1=5, p2=9, j1=4, j2=2

Output: Yes

อธิบาย: กระโดดครั้งที่ 1: p1=9, p2=11; ครั้งที่ 2: p1=13, p2=13 -> พบกัน

แนวทางแก้ปัญหา

เงื่อนไขการพบกัน:

  • ถ้า p1 > p2 ต้องมี j1 < j2 (คนหลังต้องกระโดดยาวกว่า)
  • ระยะห่างต้องหารด้วยความต่างของระยะกระโดดลงตัว: (p2-p1) % (j1-j2) == 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