硬币问题

思路:每次选择最大的面值

#include<bits/stdc++.h>
using namespace std;

/*
问题描述
有1元、5元、10元、50元、100元、500元的硬币各C1、C5、C10、C50、C100、C500枚,
先要用这些硬币来支付A元,最少需要多少枚硬币?假定本题存在解。

输入
C1=3,C2=2,C10=1,C50=33,C100=0,C500=2,A=620

输出
6


*/

const int v[6]={1,5,10,50,100,500};//记录面值
int c[6]; //存储有多少硬币
int A; 

void solve(){
	int ans=0;
	for(int i=5;i>=0;--i){
		int t =min(A/v[i],c[i]);
		A -=t*v[i];
		ans +=t;
	}
	cout<<ans;
}


int main(){
	for(int i=0;i<6;i++) cin>>c[i];
	cin>>A;
	solve(); 
	return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值