Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Tìm X và Y cuối cùng khi chúng thay đổi theo điều kiện cho trước trong C++


Cho 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, với các thay đổi như sau:

  • bước1 - Nếu X = 0 và Y = 0 thì kết thúc, ngược lại đi bước2
  • bước2 - Nếu X ≥ 2Y, gán X = X - 2Y, quay lại bước1, ngược lại bước3
  • bước3 - Nếu Y ≥ 2X, gán Y = Y - 2X, quay lại bước1, ngược lại kết thúc.

Số X và Y nằm trong khoảng [0, 10¹⁸] nên có thể dùng cách 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ả

X: 0 Y: 1