#P2581. Exact Change Only
Exact Change Only
中文题面:
描述
布德罗伸手过去,摇醒了在新墨西哥某处打瞌睡的蒂博多。
“我们在哪儿?”
蒂博多迷迷糊糊地打着哈欠问道。
“肯定不在拉斯维加斯,我敢打包票,但你能把我背包拿过来吗?”
布德罗指着他们那辆樱桃红色福特米亚塔后座上那个磨损的皮质背包说。
“怎么了,出问题了吗?”
“先把我的背包给我,不管有没有问题。”
蒂博多照做了,就在布德罗把车在一排靠近收费站的车辆中缓缓停下时,他抬头看了一眼。
“美元——仅限精确找零”,蒂博多读着一座小木屋前黄色标志牌上的字,木屋里只有一名收费员。
“我得有美元的精确零钱?”蒂博多一边翻找背包一边问,“我就只有十个美分硬币、四个美分硬币和三个美分硬币。我没有美分硬币……”
“那就给我五个美分硬币和四个美分硬币吧。”
布德罗伸出手说。
“哦,对哦。”蒂博多说着递过硬币,“确实能凑成美元。
真希望能有个简单的方法来判断给定一堆硬币时,是否能凑出某个确切金额。”
“嗯哼。”布德罗耸耸肩,“听起来像是个不错的编程问题。”
输入
这个问题的输入将由一系列(非空)数据集组成,最多可包含个数据集。
每个数据集将按照以下描述格式化,且各数据集之间没有空行分隔。
一个数据集包含个部分:
起始行的单行内容: 其中:
: 是一个保留两位小数的货币金额。
: 是四舍五入到整数的美分硬币数量 (一枚25美分硬币= 美元)。
: 是四舍五入到整数的美分硬币数量 (一枚美分硬币= 美元)。
: 是四舍五入到整数的美分硬币数量(一枚美分硬币= 美元)。
: 是四舍五入到整数的美分硬币数量 (一枚美分硬币= 美元)。
输出
对于每个数据集,将恰好输出一行结果。
如果存在一个或多个给定硬币子集的值恰好能加起来等于给定的货币金额,则输出格式为:
其中
是美分硬币的数量
是美分硬币的数量
是美分硬币的数量
是美分硬币的数量对应于所需硬币数量最少的子集。
否则,输出将为一行内容:“NO EXACT CHANGE”。
输入数据1
0.45 2 1 1 4
0.75 3 7 1 75
输出数据1
NO EXACT CHANGE
3 0 0 0
来源
2003年美国南中央地区大学生程序设计竞赛