在C++中,找到在给定条件下变化后的最终X和Y值


假设我们有两个正整数X和Y的初始值。找到X和Y的最终值,这些值将根据以下提到的方式进行改变:

  • 步骤1 - 如果X = 0且Y = 0,则终止过程,否则转到步骤2

  • 步骤2 - 如果X >= 2Y,则将X设置为X – 2Y,并转到步骤1,否则转到步骤3

  • 步骤3 - 如果Y >= 2X,则将Y设置为Y – 2X,并转到步骤1,否则结束过程。

数字X和Y将在[0和1018]范围内,因此我们可以使用蛮力法。

示例

#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);
}

输出

X: 0
Y: 1

更新时间: 2020年7月8日

73 次浏览

开启你的职业生涯

通过完成课程获得认证

开始学习
广告