c语言题:喝啤酒

一道很有意思的题,重点在于看成很多次买酒,除了第一次用钱买,之后都用空瓶和瓶盖。只需记录下每一次空瓶数、瓶盖数,然后用空瓶和瓶盖买新酒喝,接着更新剩余的空瓶和瓶盖数(注意要加上新买的酒喝完后的空瓶和瓶盖),在下一次继续用空瓶和瓶盖买酒喝,如此循环,直到空瓶和瓶盖都买不起酒即可。

代码如下:

#include<stdio.h>
int main()
{
	int money, bottle, n;
	int a, b, ba, bb;   /*a是空瓶,b是瓶盖*/
	scanf("%d", &money);
	bottle = money / 2;
	n = bottle;  /*n用来将第一次用钱买的酒的空瓶数和瓶盖数传递给a和b*/
	a = n;
	b = n;
	while ((a >= 2) || (b >= 4))   /*当a和b都不足以买酒时循环停止*/
	{
		ba = a / 2, bb = b / 4;   /*用a去买酒,买到ba瓶;用b去买酒,买到bb瓶*/
		a = a % 2, b = b % 4;     /*买完就后剩余的a和b*/
		bottle = bottle + ba + bb;   /*买的新酒和之前的酒一共装在bottle里*/
		a = a + ba + bb, b = b + ba + bb;     /*剩余的a加上新酒喝完后补充的得到新一轮买酒的资金a。b同理*/
	}
	printf("%d %d %d %d", bottle, a, b, money % 2);
	return 0;

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值