一个人有10元钱,买啤酒2元钱一瓶,两个啤酒瓶换一瓶,四个啤酒盖换一瓶,请问此人一个喝了多少瓶?
可以喝到15瓶或者20瓶,因为有两种计算方式,所以有两种结果
1、不许借的话,可以喝到15瓶:
第一轮,买5瓶,(得到5空瓶,5盖)
第二轮,可以换3瓶,(剩余4空瓶,4盖)
第三轮,可以换3瓶,(剩余3空瓶,3盖)
第四轮,可以换1瓶,(剩余2空瓶,4盖)
第五轮,可以换2瓶,(剩余2空瓶,2盖)
第六轮,可以换1瓶,(剩余1空瓶,3盖)
这样共喝到5+3+3+1+2+1=15(瓶)
2、允许借的话,可以喝到20瓶:
当然,如果想喝到理论的20瓶,需要老板好心,配合,愿意借瓶子和盖子才行。
因为从理论来算,剩下的1个瓶子,3个盖子还值2.5元,还能喝5瓶酒。
第一步借1个瓶子,借1个盖子,换2瓶酒,喝完后归还欠的瓶和盖,剩1个瓶子,1个盖子(喝2瓶)
第二步借1个瓶子,换1瓶酒,喝完后归还欠的瓶子,剩下2个盖子(喝1瓶)
第三步借2个盖子换1瓶酒,喝完后归还欠的盖子,还欠1个盖子,剩下1个瓶子(喝1瓶)
第四步借1个瓶子换1瓶酒,喝完后归还欠的瓶子盖子,两不相欠(喝1瓶)
这样,又能用1个瓶子和3个瓶盖,换5瓶啤酒,一起可以喝到20瓶啤酒。
扩展资料:
例:设酒为X,瓶为Y,盖为Z
可得出公式,2元=X+Y+Z
2元=2Y=4Z
故可算出,酒的价值为0.5元,瓶为1元,盖为0.5元。
三元一次方程是含有三个未知数并且未知数的的项的次数都是1的方程,也就是含有3个未知数的一次方程,其一般形式为ax+by+cz=d。
由多个一元一次方程组成并含有三个未知数的方程组叫做三元一次方程组,其求解方法一般为利用消元思想使三元变二元,再变一元。
解三元一次方程组的基本思想仍是消元,其基本方法是代入消元法和加减消元法。
步骤:
①利用代入法或加减法,消去一个未知数,得到一个二元一次方程组;
②解这个二元一次方程组,求得两个未知数的值;
③将这两个未知数的值代入原方程中含有三个未知数的一个方程,求出第三个未知数的值,把这三个未知数的值用一个大括号写在一起就是所求的三元一次方程组的解。
不许借的情况下,可以喝到15瓶的算法:
/*** 测试*/public void test() {int count = changBeer(10, 2, 2, 4);}/*** 兑换啤酒** @param money 当前的现金* @param price 啤酒价格* @param pingTOBeerCount 兑换一瓶酒所需要的瓶子数* @param gaiToBeerCount 兑换一瓶酒所需要的盖子数* @return 兑换到的啤酒总数*/int changBeer(int money, int price, int pingTOBeerCount, int gaiToBeerCount) {if (money <= 0 || price <= 0 || money / price <= 0) {return 0;}//刚开始兑换到的啤酒数int startCount = money / price;//喝完啤酒后,剩余的瓶子数int leftPing = startCount;//喝完啤酒后,剩余的盖子数int leftGai = startCount;return __count(pingTOBeerCount, gaiToBeerCount, leftPing, leftGai, startCount);}int __count(int pingTOBeerCount, int gaiToBeerCount, int ping, int gai, int count) {if (ping < pingTOBeerCount && gai < gaiToBeerCount) {System.out.println("剩余的ping:" + ping + ",剩余的盖:" + gai + ",总共兑换的酒:" + count);return count;}int gaiToPing;//盖子数大于等于gaiToBeerCount时,开始兑换啤酒if (gai >= gaiToBeerCount) {gaiToPing = gai / gaiToBeerCount;gai = gai % gaiToBeerCount + gaiToPing;ping += gaiToPing;count += gaiToPing;}//瓶子数大于等于pingTOBeerCount时,开始兑换啤酒int pingToPing;if (ping >= pingTOBeerCount) {pingToPing = ping / pingTOBeerCount;ping = ping % pingTOBeerCount + pingToPing;gai += pingToPing;count += pingToPing;}//当前,兑换啤酒且喝完啤酒,进行下一轮兑换return __count(pingTOBeerCount, gaiToBeerCount, ping, gai, count);}
一个人有10元钱,买啤酒2元钱一瓶,两个啤酒瓶换一瓶,四个啤酒盖换一瓶,请问此人一个喝了多少瓶?相关推荐
- 小明拿了一百块钱买了三块钱的东西,老板找他97块钱, 请问,老板有多少种找法(1元,五元,十元,20元,50元)
public class Test08{ /** 小明拿了一百块钱买了三块钱的东西,老板找他97块钱,请问,老板有多少种找法(1元,五元,十元,20元,50元)*/public static void ...
- python百钱买百鸡-百钱买百鸡的Python实现
"百钱买百鸡"是一个很有历史的问题了,大意就是:小鸡半文一只,母鸡一文一只,公鸡二文一只,现有一百文钱,刚好买了一百只鸡,请问小鸡.母鸡与公鸡各有多少只? 如果假设小鸡.母鸡和公鸡 ...
- 百钱买白鸡与啤酒饮料
第一题 标题:啤酒和饮料 啤酒每罐2.3元,饮料每罐1.9元.小明买了若干啤酒和饮料,一共花了82.3元. 我们还知道他买的啤酒比饮料的数量少,请你计算他买了几罐啤酒. ...
- 经典算法题每日演练——第一题 百钱买百鸡
经典算法题每日演练--第一题 百钱买百鸡 原文:经典算法题每日演练--第一题 百钱买百鸡 百钱买百鸡的问题算是一套非常经典的不定方程的问题,题目很简单:公鸡5文钱一只,母鸡3文钱一只,小鸡3只一文钱, ...
- JAVA2块钱瓶子_啤酒2元一瓶,4个瓶盖换一瓶,2个空瓶换一瓶,问:10元钱可以喝几瓶。用java编程解出答案,求大神们帮忙...
点击查看啤酒2元一瓶,4个瓶盖换一瓶,2个空瓶换一瓶,问:10元钱可以喝几瓶.用java编程解出答案,求大神们帮忙具体信息 答:package test;public class Test {publ ...
- * 3.喝啤酒问题,一瓶啤酒2元,两个空瓶子可以换一瓶啤酒,四个啤酒盖可以换一瓶啤酒,请问10元共可以喝多少瓶?
package dh12_1111.IO.FIB;/*** @Description TODO* @Author 湖大知行李国勇* @Date 2022/11/11 10:07* 3.喝啤酒问题,一瓶 ...
- 每瓶啤酒2元,2个空酒瓶或4个瓶盖可换1瓶啤酒。10元最多可喝多少瓶啤酒?
<?echo "每瓶啤酒2元,2个空酒瓶或4个瓶盖可换1瓶啤酒.n元最多可喝多少瓶啤酒?<br/>";for ($i=0; $i<=100 ; $i++) ...
- java实现:啤酒2元一瓶,10个盖子可以换一瓶啤酒,4个瓶子可以换一瓶啤酒,请问x元最多可换多少瓶啤酒
花钱买酒 import java.util.Scanner;public class Maijiu {public static void main(String[] args) {// TODO A ...
- python 瓶盖换酒问题(啤酒2块钱一瓶,2个酒瓶可以换一瓶酒,4个瓶盖可以换一瓶酒 问10块钱可以喝几瓶酒)
问题:2元一瓶酒,2个空瓶换一瓶,4个瓶盖换一瓶 问10块钱买几瓶酒?? 最终喝到酒的数量 class Change:def __init__(self,money):self.money=money ...
最新文章
- Linux的mount命令简介
- 为Liferay Server分配Perm,Heap Size
- JAVA面试常考系列六
- win10控制视频声音大小
- linux spi驱动分析 三,Linux下SPI驱动分析
- 绕固定坐标轴旋转与绕自身坐标轴旋转一致性证明
- 为用户提供出游指南,抖音发起“抖音美好打卡地”文旅认证品牌
- NETCDF C and FORTRAN 4.2 安装笔记
- 苹果iPA游戏软件资源下载网站
- 推荐一款高颜值网易云播放器
- 计算机网络:IPv6
- DDN4.9实践 - Source版的安装
- android家庭理财系统毕业设计报告,毕业设计(论文)-基于Android的家庭理财通系统设计.doc...
- LWIP协议栈设计与实现笔记:
- 常用射频器件性能指标
- android开发必备日志打印工具类
- 2019武科大校赛游记
- Button上面添加一个图片
- 基于MFC的打飞机游戏
- 基于matlab的GPS单点定位程序开发(初学者)