喝啤酒

某人出10元去买啤酒,每瓶啤酒两元,两个空瓶可以兑换一瓶,四个盖子也可以兑换一瓶,请问,该人共可以喝多少瓶?

我开始了口算的节奏:

1. 10元可以先购买5瓶啤酒,剩下5盖子和5空瓶;

2. 用上面这5瓶啤酒中的4盖子和4空瓶再兑换3瓶,现在可以喝8瓶,剩4盖子4空瓶;

3. 这4盖子和4空瓶可以去兑换3瓶,即现在可以喝11瓶啦,还剩3盖子和3空瓶;

4. 用上面的3空瓶拿出其中两个去换一瓶回来,可以喝12瓶啦,剩4盖子和两空瓶;

5. 用上面4盖子和两空瓶再去换两瓶回来,喝14瓶啦,剩两盖子和两空瓶;

6. 最后两空瓶再兑换一瓶,哇15瓶,剩3盖子1空瓶再也不能兑换啦!

我记得小时候啤酒单价是1.5元,两元的啤酒算是好的了。花了10块钱可以喝15瓶,这老板还真大方,难道是“水货”么?我看是!

最后发神经,要是用99、100、500,1000块钱购买啤酒呢,这该不会也是口算吧,我看还是算了!

贴出代码:

var beer = (function(){

	//盖子个数
	var cover = 0;
	//空瓶个数
	var emptyBottle = 0;
	//共可以喝多少瓶啤酒
	var beerCount = 0;

	/*
	 * 初始化可购买的瓶数
	 * @param price 啤酒单价
	 * @param money 出多少钱买啤酒
	 */
	function initBuy(price,money){
	   var amount = Math.floor(money/price);
	   for(var i = 0;i < amount;i++){
		  emptyBottle++;
		  cover++;
		  beerCount++;
	   }
	};

	/*
	 * 盖子兑换
	 * @param ratio 兑换比率
	 */
	function changeCover(ratio){
	   //兑换数量
	   var amount = Math.floor(cover/ratio);
	   //盖子数量若少于ratio,不能兑换
	   if(amount == 0)return;
	   cover -= amount*ratio;
	   //每兑换一瓶啤酒,会得到一个空瓶和一个盖子
	   for(var i = 0;i < amount;i++){
		 cover++;
		 emptyBottle++;
		 beerCount++;
	   }
	};

	/*
	 * 空瓶子兑换
	 * @param ratio 兑换比率
	 */
	function changeEmptyBottle(ratio){
	   //兑换数量
	   var amount = Math.floor(emptyBottle/ratio);
	   //空瓶数量若少于ratio,不能兑换
	   if(amount == 0)return;  
	   emptyBottle -= amount*ratio;
	   //每兑换一瓶啤酒,会得到一个空瓶和一个盖子
	   for(var i = 0;i < amount;i++){
		 cover++;
		 emptyBottle++;
		 beerCount++;
	   }
	};

	/*
	 * 输出结果
	 * @param price 单价
	 * @param money 出多少钱买啤酒
	 * @param coverRatio 盖子兑换比率
	 * @param bottleRatio 空瓶兑换比率
	 */
	function printResult(price,money,coverRatio,bottleRatio){
		initBuy(price,money);
		do{
		  changeCover(coverRatio);
		  changeEmptyBottle(bottleRatio);
		}
		while(cover >= coverRatio || emptyBottle >= bottleRatio);
		console.log("可以喝"+beerCount+"瓶,剩余空瓶"+emptyBottle+",剩余盖子"+cover);
	};
	
	return printResult;

})();

beer(2,10,4,2);

> 可以喝15瓶,剩余空瓶1,剩余盖子3

20元可以喝35瓶,剩余空瓶1,剩余盖子3。

50元可以喝95瓶,剩余空瓶1,剩余盖子3。

99元可以喝191瓶,剩余空瓶1,剩余盖子3。

100元可以喝195瓶,剩余空瓶1,剩余盖子3。

1000元可以喝1995瓶,剩余空瓶1,剩余盖子3。

10000元可以喝19995瓶,剩余空瓶1,剩余盖子3。

100000元可以喝199995瓶,剩余空瓶1,剩余盖子3。

这样算下来,每瓶单价大于并接近5毛,5毛也不亏。。。

转载于:https://www.cnblogs.com/dzyBlog/p/5549540.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值