#P03045. 更相减损术

更相减损术

题目背景

我国古代《九章算术》中记载有使用 更相减损术 计算两个正整数的最大公约数,其方法为:

可半者半之,不可半者,副置分母、子之数,以少减多,更相减损,求其等也。以等数约之。

具体做法可以参考下面的示例:

  • 不可半者(两个正整数不都是偶数):

以 1515 和 4242 为例,直接辗转相减,直至减数和差相等:

  1. 42−15=2742-15=27
  2. 27−15=1227-15=12
  3. 15−12=315-12=3
  4. 12−3=912-3=9
  5. 9−3=69-3=6
  6. 6−3=36-3=3

所以,1515 与 4242 的最大公约数为 33。

  • 可半者(两个正整数都是偶数):

以 168168 和 120120 为例:

【第一步】先将 168168 和 120120 用 22 反复约简,直至不都是偶数,约数最后为 88(用 22 约简了三次),约简后两数是 2121 和 1515;

【第二步】分别将两个约简后的数用“不可半者”的处理方法辗转相减,直至减数和差相等:

  1. 21−15=621-15=6
  2. 15−6=915-6=9
  3. 9−6=39-6=3
  4. 6−3=36-3=3

【第三步】求差和约数的乘积:3×8=243×8=24

所以,168168 与 120120 的最大公约数为 2424。

题目描述

对于提供的两个正整数,用“更相减损术”计算它们的最大公约数,同时记录处理次数。

输入格式

两个正整数,中间用一个空格隔开。

输出格式

两行,第一行是输入的两个正整数的最大公约数,第二行是用“更相减损术”计算它们的最大公约数的过程中“折半”和“辗转相减”的处理次数。

输入输出样例

168 120
24
7

说明/提示

👀️ 对于 100%100\% 的数据,输入的两个正整数均不超过 10910^9。

👀️ 对于样例,将 168168 和 120120 用 22 反复约简,用 22 约简了三次,“折半”了 33 次;然后用“不可半者”的处理方法辗转相减,直至减数和差相等,做了四次减法,“辗转相减”了 44 次:一共处理了 77 次。