ZWY近喜欢在下课后喝酒,她说:“喝酒是人类进步的动力”。现在,便利商店推出了兑换活动。
1.两个酒瓶可以兑换1瓶酒
2.四个酒瓶盖子可以兑换1瓶酒
她先知道,在当前她所拥有的资金m和一些空酒瓶k、瓶盖g和当前酒价p已知情况下,她最多可以喝到多少瓶酒。
输入描述:
在一行中,给出四个整数,含义如题所述,m(-10000 <= m <= 10000),k(0 <= k <= 10000),g(0 <= g <= 10000),p(1 <= p <= 200)
输出描述:
输出一个整数,表示ZWY最多能喝到多少瓶酒。
题目解析:本题难点在于由于不断的喝酒会有不断的空酒瓶和瓶盖,因此计算量是比较大的,因此要灵活的用循环来做,推荐用while语句来做。
1.首先,先用m/p得到用钱来买喝的酒,别忘了空酒瓶和瓶盖数也会随之增加。
2.用while语句,当空酒瓶数和瓶盖数分别大于等于2和4时,进入循环.
3.空酒瓶数大于等于2,除2得到喝酒的瓶数,取2的余数则是如果k为奇数的话,会有剩余,最后别忘了空酒瓶数和瓶盖数增加。
4.最后瓶盖数大于等于4,除4得到喝酒的瓶数,取4的余数也是求剩余,最后别忘了空酒瓶数和瓶盖数增加。
代码如下:
#include<iostream>
using namespace std;
int main(){
int m,k,g,p;
cin>>m>>k>>g>>p;
int sum=0;
if(m>0){
int t=m/p;
sum+=t,k+=t,g+=t;
}
while(k>=2||g>=4){
int t=0;
if(k>=2){
t=k/2;
k%=2;//巧妙的如果k为奇数,可以余下的空瓶数;
sum+=t,k+=t,g+=t;
}
if(g>=4){
t=g/4;
g%=4;
sum+=t,g+=t,k+=t;
}
}
cout<<sum<<endl;
return 0;
}