4000088 - 购物
Time Limit : 1 秒
Memory Limit : 128 MB
你就要去购物了,现在你手上有 N 种不同面值的硬币,每种硬币有无限多个。为了方便购物,你希望带尽量少的硬币,但要能组合出 1 到 X 之间的任意值。
Input
第一行两个数 X\ (1\le X \le 1000)、N\ (1\le N \le 10)。
接下来 N 个数,表示每种硬币的面值,币值范围在 [1,1000] 内。
Output
最少需要携带的硬币个数,如果无解输出 -1。
Examples
Input
20 4 1 2 5 10
Output
5
Hint
先对币值排序,当前已经凑得 s 以内所有的正整数,则下一个加入的硬币最大为 s+1(否则不能凑得 s+1),并且越大越好。第一次肯定只能放进价值为 1 的硬币,如果没有就说明无解。