दो पॉजिटिव पूर्णांकों 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 और 10¹⁸] में होगी इसलिए हम ब्रूट फोर्स दृष्टिकोण का उपयोग कर सकते हैं।
उदाहरण
#includeusing 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