代码之家  ›  专栏  ›  技术社区  ›  Elliott Weaver

从(a,b)到(0,0)的最小步数是多少,如果你能把一个数加倍,或者从两个数中加或减任何一个数?

  •  1
  • Elliott Weaver  · 技术社区  · 6 年前

    假设是最坏的情况。添加任何数字(可以是负数),但必须同时添加到这两个数字。只有一个可以从(a,b)加倍。这可以根据需要做很多次。

    到达(0,0)的最小步骤是什么?

    1 回复  |  直到 6 年前
        1
  •  4
  •   Nico Schertler    6 年前

    它总是可以分三步完成的。

    第一步:添加数字 x ,使得一个数字是另一个数字的两倍大:

     a + x = 2 (b + x)
    a - 2b = x
    

    然后把第二个数加倍(使两个数相等),最后减去所有的数 (0, 0) )中。

    如果两个数字都已经为零(0步),两个数字都相等(1步),或者 是零(两步)。