Hãy xem xét chúng ta có các giá trị ban đầu của hai số nguyên dương X và Y. Tìm giá trị cuối cùng của X và Y, sao cho sẽ có một số thay đổi như được đề cập bên dưới -
-
bước1 - Nếu X =0 và Y =0 thì kết thúc quá trình, nếu không thì chuyển sang bước 2
-
bước 2 - Nếu X> =2Y, sau đó đặt X =X - 2Y và chuyển sang bước 1, nếu không, hãy chuyển sang bước 3
-
bước 3 - Nếu Y> =2X, thì đặt Y =Y - 2X và chuyển sang bước 1, nếu không thì kết thúc quá trình.
Số X và Y sẽ nằm trong khoảng [0 và 1018] Vì vậy, chúng ta có thể sử dụng phương pháp Brute Force.
Ví dụ
#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);
} Đầu ra
X: 0 Y: 1