इस समस्या में, हमें चार पूर्णांक दिए गए हैं जो दौड़ में प्रत्येक के प्रारंभिक बिंदु और कूद को दर्शाते हैं। हमारा कार्य जांचना है कि क्या दो लोग समान संख्या में कूद के बाद कभी मिलते हैं।
समस्या विवरण: यहां, हमें जांचना है कि बिंदु p1 और p2 से शुरू होने वाले दो व्यक्ति जो कूद j1 और j2 लेते हैं, पथ में किसी बिंदु पर मिलेंगे या नहीं।
समस्या को समझने के लिए एक उदाहरण लेते हैं,
इनपुट: p1 = 5, p2 = 9, j1 = 4, j2 = 2
आउटपुट: Yes
व्याख्या:
पहली कूद के बाद, 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