程序设计比赛试题
主办方:
迅翔计算机协?/p>
最少钱币数?/p>
【问题描述?/p>
这是一个古老而又经典的问题?/p>
用给定的几种钱币凑成某个钱数?/p>
一般而言有多种方式?/p>
?/p>
如:给定?/p>
6
种钱币面值为
2
?/p>
5
?/p>
10
?/p>
20
?/p>
50
?/p>
100
,用来凑
15
元,可以?/p>
5
?/p>
2
元?/p>
1
?/p>
5
元,或?/p>
3
?/p>
5
元,或?/p>
1
?/p>
5
元?/p>
1
?/p>
10
元,等等。显然,最少需?/p>
2
个钱币才?/p>
凑成
15
元?/p>
你的任务就是?/p>
给定若干个互不相同的钱币面值,
编程计算?/p>
最少需要多少个钱币才能凑成
某个给出的钱数?/p>
?/p>
要求
?/p>
?/p>
数据输入
?/p>
输入可以有多个测试用例?/p>
每个测试用例的第一行是待凑的钱数?/p>
M
?/p>
1 <= M
<= 2000
,整数)
,接着的一行中,第一个整?/p>
K
?/p>
1 <= K <= 10
)表示币种个数,随后?/p>
K
个互不相同的钱币面?/p>
Ki(1 <= Ki <= 1000)
。输?/p>
M=0
时结束?/p>
?/p>
数据输出
】每个测试用例输出一行,即凑成钱数?/p>
M
最少需要的钱币个数。如果凑钱失
败,输出?/p>
Impossible
?/p>
。你可以假设,每种待凑钱币的数量是无限多的?/p>
?/p>
样例输入
?/p>
15
6 2 5 10 20 50 100
1
1 2
0
?/p>
样例输出
?/p>
2
Impossible