Cho hai số nguyên dương X, Y ban đầu. Tìm giá trị cuối cùng của X, Y sau các thay đổi:
- Bước 1: Nếu X=0 và Y=0 thì dừng, ngược lại bước 2
- Bước 2: Nếu X >= 2Y thì X = X - 2Y, quay lại bước 1, ngược lại bước 3
- Bước 3: Nếu Y >= 2X thì Y = Y - 2X, quay lại bước 1, ngược lại kết thúc
X, Y trong khoảng [0, 10^18]. Dùng phương pháp brute force.
Ví dụ mã nguồn
#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);
}
Kết quả đầu ra
X: 0 Y: 1