王多鱼获得了一笔的奖金X,要求购买最少的商品把钱花光,即没有零钱剩下,否则奖金会被没收。
输入:
一个整数k:商品的种类(每个种类商品个数有限);
第i类商品的价值a[i];第i类商品的数量b[i];
一个整数m:奖金总额;
输出:
最少商品数量
举例:
输入:
7
1 2 5 10 20 50 100
5 5 5 5 5 5 1
288
输出:
9
#include <iostream>
using namespace std;
int min(int a,int b)
{
return a>b?b:a;
}
int main()
{
int k,n,m,p,cnt=0,a[1000],b[1000];
cin>>k;
for(int i=1;i<=k;i++)
cin>>a[i];
for(int i=1;i<=k;i++)
cin>>b[i];
cin>>m;
for(int i=k;i>=1;i--){
if(m>=a[i]){
n = m/a[i];
p = min(n,b[i]);
m = m - p*a[i];
cnt +=p;
if(m==0)
break;
}
}