#U1516FS3. Milk Pails

Milk Pails

Farmer John 收到了一份需要立即装满 M 单位牛奶 (1≤M≤200) 的订单。不幸的是,他那辆漂亮的挤奶机刚刚坏了,他只有两个大小为整数 X 和 Y (1≤X,Y≤100) 的牛奶桶,他可以用它来量牛奶。两个桶最初都是空的。使用这两个桶,他最多可以执行以下类型的操作中的 K 个(1≤K≤100):

  • 他可以将任一桶完全装满。
  • 他可以清空任何一个桶。
  • 他可以将一个桶中的内容倒入另一个桶中,当前者变空或后者变满时停止(以先发生者为准)。

尽管 FJ 意识到他可能无法在两个桶中准确地得到总共 M 个单位的牛奶,但请帮助他计算 M 与两个桶中的牛奶总量之间的最小误差量。即请计算|M−M′|的最小值。这样 FJ 可以在两个桶之间共同构建 M' 单位的牛奶。

输入格式(文件 pails.in):

第一行也是唯一的输入行包含 X、Y、K 和 M。

输出格式(文件 pails.out):

输出从 M 到 FJ 可以生产的牛奶量的最小距离。

SAMPLE INPUT:

14 50 2 32

SAMPLE OUTPUT:

18

在两个步骤中,FJ 可以在他的桶中留下以下数量

(0, 0) = 0 units
(14, 0) = 14 units
(0, 50) = 50 units
(0, 14) = 14 units
(14, 36) = 50 units
(14, 50) = 64 units

最接近 32 个单位的是 14 个,相差 18 个。请注意,倒出第一个桶需要额外的步骤才能得到 (0, 36)。