链接:https://ac.nowcoder.com/acm/contest/9752/A
来源:牛客网
时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 262144K,其他语言524288K
64bit IO Format: %lld
题目描述
牛牛是一个酒鬼,非常爱喝酒,一瓶酒m元钱,两个酒瓶可以换一瓶酒,四个瓶盖可以换一瓶酒,现在有 n 元钱,求最多可以喝多少瓶酒?
(注:没有借贷功能,即最终不允许借一瓶酒、喝完后拿酒瓶兑换归还的操作)
示例1
输入
复制
2,12
返回值
复制
19
说明
牛牛总计可以喝19瓶酒
备注:
0 < m < 100
0 < n < 2000
思路:
先计算买的酒的数量,然后每次计算剩余酒瓶的数量和酒盖的数量在进行兑换,不能兑换的累积
代码:
#include<stdio.h>
int main()
{
int m,n;
scanf("%d %d",&m,&n);
int s1=n/m;//买的
int s3=s1;
int s=s1;//酒瓶
int s2=s1;//酒盖
int s4,s5,s6;
while(s/2||s2/4)
{
s4=s/2;//酒瓶换的
s5=s2/4;//酒盖换的
s6=s/2+s2/4;//换酒的总数
s3+=s6;//当前买+换的所有酒
s=s%2+s4+s5;//余的酒瓶+新换的酒瓶
s2=s2%4+s5+s4;//余的酒盖+新换的酒盖
}
printf("%d\n",s3);
return 0;
}