硬币问题
有1、5、10、50、100、500元的硬币各c0、c1、c2、c3、c4、c5个,现在要用这些硬币来支付sum元,最少要多少枚硬币? 假定本题至少存在一种方案
输入
3 2 1 3 0 2 620
输出
6
看代码
#include<iostream> #include<string.h> #include<map> #include<cstdio> #include<cstring> #include<stdio.h> #include<cmath> #include<math.h> #include<algorithm> #include<set> #include<queue> typedef long long ll; using namespace std; const ll mod=1e9+7; const int maxn=1e2+10; const int maxk=1e4+10; const int maxx=1e4+10; const ll maxe=1000+10; #define INF 0x3f3f3f3f3f3f #define Lson l,mid,rt<<1 #define Rson mid+1,r,rt<<1|1 int va[6]={1,5,10,50,100,500}; int c[6]; int sum; void solve() { int ans=0; for(int i=5;i>=0;i--) { int t=min(sum/va[i],c[i]); ans+=t; sum-=t*va[i]; } cout<<ans<<endl; } int main() { for(int i=0;i<6;i++) cin>>c[i]; cin>>sum; solve(); return 0; }
当初的梦想实现了吗,事到如今只好放弃吗~