मान लें हमारे पास दो धनात्मक पूर्णांकों X और Y के प्रारंभिक मान हैं। X और Y के अंतिम मान ज्ञात करें, जैसे कि नीचे वर्णित कुछ परिवर्तन होंगे:
चरण 1 - यदि X = 0 और Y = 0 तो प्रक्रिया समाप्त करें, अन्यथा चरण 2 पर जाएं
चरण 2 - यदि X >= 2Y, तो X = X - 2Y सेट करें, और चरण 1 पर जाएं, अन्यथा चरण 3 पर जाएं
चरण 3 - यदि Y >= 2X, तो Y = Y - 2X सेट करें, और चरण 1 पर जाएं, अन्यथा प्रक्रिया समाप्त करें।
संख्या X और Y [0 और 1018] रेंज में होंगी। इसलिए हम ब्रूट फोर्स दृष्टिकोण का उपयोग कर सकते हैं।
उदाहरण
#include <iostream>
using namespace std;
void alterNumber(long long x, long long y) {
while (1) {
if (x == 0 || y == 0)
break;
if (x >= 2 * y)
x = x % (2 * y);
else if (y >= 2 * x)
y = y % (2 * x);
else
break;
}
cout << "X: " << x << "\n" << "Y: " << y;
}
int main() {
long long x = 12, y = 5;
alterNumber(x, y);
}
आउटपुट
X: 0 Y: 1