AT_nupc2024_b.おつり
通过率:0%
AC君温馨提醒
该题目为【atcoder】题库的题目,您提交的代码将被提交至atcoder进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
NUPC 国目前流通有 N 种硬币,面值分别为 C1,C2,…,CN 日元。
你分别拥有 A1,A2,…,AN 枚这些硬币。
你想要购买一件价格为 M 日元的商品。商家对每种硬币都各自拥有 10100 枚,如果你支付的金额超过 M,找零会以使找回的硬币总数最少的方式进行支付。(在本题的条件下,这种找零方式是唯一的。)
此外,支付时不得出现你支付出去的硬币作为找零返还的情况。 例如,若你用一枚 10 日元硬币支付,找零中不能包含 10 日元硬币。
你希望购买商品后,自己手里剩余的硬币数尽可能少。请输出一种剩余硬币数最少的支付方案。
输入格式
输入通过标准输入按以下格式给出。
N M C1 C2 … CN A1 A2 … AN
输出格式
请输出一种支付方案。
m1 m2 … mN
这里,m1,m2,…,mN 分别表示每种硬币支付的枚数,需满足 0≤mi≤Ai (1≤i≤N) 且 ∑i=1NCi⋅mi≥M。
输入输出样例
输入#1
6 100 1 5 10 50 100 500 1 1 1 1 1 1
输出#1
0 0 0 0 1 0
输入#2
6 100 1 5 10 50 100 500 2 2 2 2 2 2
输出#2
0 2 0 2 0 0
输入#3
4 1000 1 100 500 1000 2000 0 0 0
输出#3
2000 0 0 0
说明/提示
样例解释 1
如果用 1 枚 100 日元硬币支付,最终你手里还剩 5 枚硬币,无法使用更少的硬币支付。因此,这是一个满足条件的支付方案例。
样例解释 2
如果用 2 枚 50 日元、2 枚 5 日元硬币支付,最终你手里还剩 9 枚硬币,无法使用更少的硬币支付。因此,这是一个满足条件的支付方案例。
另外,以下支付方式虽然也能使剩余硬币数量为 9 枚,但由于其中 10 日元硬币既被用于支付也被用于找零,不满足题目的支付条件:
0 2 1 2 0 0
数据范围
- 所有输入均为整数
- 1≤N≤30
- 1=C1<C2<⋯<CN≤109
- Ci+1 是 Ci 的倍数(1≤i≤N−1)
- 0≤Ai≤109 (1≤i≤N)
- 1≤M≤∑i=1NCi⋅Ai
由 ChatGPT 5 翻译
输入解题思路,AI测评打分。不知道怎么写?