题目大意:
给你面值为1,5,10,20,50,100,200,500,1000,2000的钞票$c_1、c_2 \ldots c_{10}$,问你给出的这些钱能否恰好凑出p元来,如果可以,最多的数量是多少。
解题思路:
用给出的钱从大到小比较和p的关系凑很容易检查能否凑出p元来,这时是用的最少的数量凑的。
用最多的数量的话就是用tot - (最少的钱数凑的sum - p的数量),tot是总数量,sum是总面值和。本来以为到这里就结束了,然而满足上面这是最少使用量的前提是小面额是大面额的因子,即任意数量的大面额总能用若干小面额凑出来,而在本题中20、50,200、500不满足。对于这种情况的解法,我们可以将两个50的合成一个100的,两个500的合成一个1000的来算,但是答案可能还有用到1个50/500的情况。好在他们的搭配只有4种,这时我们只要枚举这4种情况就好了。
Mycode:
1 |
|