题库首页 › 青少年软件编程(C语言) › 题目 16797

硬币 可以使用任意数量的 a元硬币、b 元硬币和 c 元硬币。请找出恰好凑出 n 元所需的最小硬币总数。若无法凑出,则输出 -1。 时间限制:1000ms,内存限制:256MB 输入格式 第一行,整数 n; 第二行,三个整数表示 a、b、c。 输出格式 输出最小硬币总数(若无法凑出则输出 -1)。 输入样例#1 100 20 40 50 输出样例#1 2 输入样例#2 99 1 5 10 输出样例#2 14 数据范围: 1≤N≤109;1≤A≤B≤C≤109。保证最终最小硬币总数不超过104。

正确答案:参考程序(Python):n=int(input());a,b,c=map(int,input().split());best=10**9;for i in range(n//c+1):for j in range((n-i*c)//b+1):if (n-i*c-j*b)%a==0:best=min(best,i+j+(n-i*c-j*b)//a);print(best if best<10**9 else -1)。样例→2、14。核心:三硬币最小数。

试卷来源:202509 青少年等级考试C/C++真题二级

本卷相关题目

在线做题 同科目题库