33OJ
登录 注册

#LX0068. 倒水

倒水

题目描述 2s 512MB

小明有两个杯子,容量分别为 AA 升和 BB 升。开始时,两个杯子都是空的。小明还有无穷多的水。

每次,小明可以选择进行以下任意一种操作:

  1. 将任意一个杯子接满水。
  2. 将任意一个杯子中的水全部倒掉。
  3. 将一个杯子中的水倒入另一个杯子,直到倒出水的杯子变空,或者接收水的杯子装满。如果两种情况同时发生,操作也随即结束。

每次操作必须完整执行,不能在中途主动停止。杯子没有刻度,小明不能直接接入或倒出自己指定数量的水。

如果经过若干次操作后,某一个杯子中恰好有 xx 升水,就称小明能够测出 xx 升水。这里不把两个杯子中的水量相加。

请你求出:小明能够测出多少种不同的正整数水量?同一个水量无论在哪个杯子中出现,都只计算一次。

不同水量可以通过不同的操作过程测出,不要求在同一个时刻同时测出。

输入格式

从标准输入读入数据。

一行两个正整数 A,BA,B,分别表示两个杯子的容量,单位为升。

输出格式

输出到标准输出。

输出一个整数,表示能够测出的不同正整数水量的种数。

样例输入 #1

3 12

样例输出 #1

4

样例解释 #1

能够测出的正整数水量为 3,6,9,123,6,9,12 升,共 44 种。

将小杯接满,再倒入大杯,重复这一过程,就可以让大杯中的水量依次变为 3,6,9,123,6,9,12 升。

样例输入 #2

3 5

样例输出 #2

5

样例解释 #2

能够测出的正整数水量为 1,2,3,4,51,2,3,4,5 升,共 55 种。

例如,下面的操作可以测出 44 升水。每个数对依次表示容量为 33 升、55 升的杯子中的水量:

$$(0,0)\to(0,5)\to(3,2)\to(0,2)\to(2,0)\to(2,5)\to(3,4)。$$

样例输入 #3

7 7

样例输出 #3

1

样例解释 #3

只能测出 77 升这一种正整数水量。空杯中的 00 升不计入答案。

另提供 sample 目录中的五组下发样例:data04、data08、data10、data14、data20,依次对应下表中的五档数据范围。题面中的三组小样例不另行下发。

数据范围

本题共 2020 个测试点,每个测试点 55 分,共 100100 分。

测试点编号 A,B≤A,B\leq
1∼41\sim4 2020
5∼85\sim8 200200
9∼109\sim10 20002000
11∼1411\sim14 2×1052\times10^5
15∼2015\sim20 10910^9

对于 100%100\% 的数据:

1≤A,B≤109。1\le A,B\le10^9。

附加样例

附加文件

附件包含题面所述的 sample 目录及下发样例,不参与计分。