#LX0068. 倒水
倒水
题目描述 2s 512MB
小明有两个杯子,容量分别为 升和 升。开始时,两个杯子都是空的。小明还有无穷多的水。
每次,小明可以选择进行以下任意一种操作:
- 将任意一个杯子接满水。
- 将任意一个杯子中的水全部倒掉。
- 将一个杯子中的水倒入另一个杯子,直到倒出水的杯子变空,或者接收水的杯子装满。如果两种情况同时发生,操作也随即结束。
每次操作必须完整执行,不能在中途主动停止。杯子没有刻度,小明不能直接接入或倒出自己指定数量的水。
如果经过若干次操作后,某一个杯子中恰好有 升水,就称小明能够测出 升水。这里不把两个杯子中的水量相加。
请你求出:小明能够测出多少种不同的正整数水量?同一个水量无论在哪个杯子中出现,都只计算一次。
不同水量可以通过不同的操作过程测出,不要求在同一个时刻同时测出。
输入格式
从标准输入读入数据。
一行两个正整数 ,分别表示两个杯子的容量,单位为升。
输出格式
输出到标准输出。
输出一个整数,表示能够测出的不同正整数水量的种数。
样例输入 #1
3 12
样例输出 #1
4
样例解释 #1
能够测出的正整数水量为 升,共 种。
将小杯接满,再倒入大杯,重复这一过程,就可以让大杯中的水量依次变为 升。
样例输入 #2
3 5
样例输出 #2
5
样例解释 #2
能够测出的正整数水量为 升,共 种。
例如,下面的操作可以测出 升水。每个数对依次表示容量为 升、 升的杯子中的水量:
$$(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
只能测出 升这一种正整数水量。空杯中的 升不计入答案。
另提供 sample 目录中的五组下发样例:data04、data08、data10、data14、data20,依次对应下表中的五档数据范围。题面中的三组小样例不另行下发。
数据范围
本题共 个测试点,每个测试点 分,共 分。
| 测试点编号 | |
|---|---|
对于 的数据:
附加样例
附件包含题面所述的 sample 目录及下发样例,不参与计分。