#YHSP2003. 双杯装水
双杯装水
题目描述
小明拥有两个杯子 和 ,容量分别为 升和 升。他试图通过一系列操作,使两个杯子装的水总量恰好为 升。可执行的操作包括:
- 装满杯子 。
- 装满杯子 。
- 将 杯中的水倒入 杯,直至 杯倒空或者 杯倒满。
- 将 杯中的水倒入 杯,直至 杯倒空或者 杯倒满。
- 将杯子 中的水倒入水池,清空杯子 (此操作不影响杯子 中的水)。
- 将杯子 中的水倒入水池,清空杯子 (此操作不影响杯子 中的水)。
经过实践,小明发现可能无法精准得到 升水,于是限定操作步数不超过 步。请编程计算在不超过 步操作的情况下,两个杯子装的水总量与 的差值的最小值。
输入格式
输入 4 个整数 、、、 ,分别表示杯子 的容量、杯子 的容量、最大操作步数、目标水量 。其中 , , 。
输出格式
输出一个整数,即两个杯子装的水总量与 的差值的最小值。
示例
- 输入示例1
10 15 2 7
- 输出示例1
3
- 解释:初始时 、 两杯子水量为 。第一步可选择装满 或 ,得到 或 。第二步有多种选择,如在 基础上装满 得 ,或在 基础上将 倒入 得 等。在所有可能状态中,两杯子水量之和与 的最小差值为 。
- 输入示例2
85 15 5 36
- 输出示例2
6
- 输入示例3
71 37 5 95
- 输出示例3
10
相关
在下列比赛中: