Computer >> Máy Tính >  >> Lập trình >> C ++

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


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