#abc231e. [abc231_e]Minimal payments

[abc231_e]Minimal payments

题目描述

Atcoder 王国有 NN 种硬币:A1A_1 元、A2A_2 元、...、ANA_N 元。
这里,满足 1=A1<<AN1=A_1 < \ldots < A_N,并且对于每个 1iN11\leq i \leq N-1Ai+1A_{i+1}AiA_i 的倍数。

当使用这些硬币支付价值为 XX 元的商品时,最少需要使用多少枚硬币作为支付并返回找零?

准确地说,当 YY 是不小于 XX 的整数时,找零金额为 YXY-X 元时,找零所需硬币数量与表示金额为 YY 元所需硬币数量的最小总和是多少?

约束条件

  • 所有输入值均为整数。
  • 1N601 \leq N \leq 60
  • 1=A1<<AN10181=A_1 < \ldots <A_N \leq 10^{18}
  • 对于每个 1iN11\leq i \leq N-1Ai+1A_{i+1}AiA_i 的倍数。
  • 1X10181\leq X \leq 10^{18}

输入

从标准输入中以以下格式给出输入:

NN XX A1A_1 \ldots ANA_N

输出

输出答案。


示例输入1

3 87
1 10 100

示例输出1

5

如果我们使用一枚 100 元硬币支付,并作为找零拿到一枚 10 元硬币和三枚 1 元硬币,那么总共需要 5 枚硬币。


示例输入2

2 49
1 7

示例输出2

7

最佳方案是使用七枚 7 元硬币来支付。


示例输入3

10 123456789012345678
1 100 10000 1000000 100000000 10000000000 1000000000000 100000000000000 10000000000000000 1000000000000000000

示例输出3

233