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