每瓶啤酒2元,2个空酒瓶或4个瓶盖可换1瓶啤酒。10元最多可喝多少瓶啤酒? php

//根据题意设定初始变量值//然后 一个while循环去操作//每换得一个瓶子,换的那个减去要做相应的数目//然后喝了啤酒后, 各数量加1//直到不符合要求。跳出循环 1 class Beer{
 2
 3     protected $uni_gai      = 4;    //每4个瓶盖1瓶
 4     protected $uni_bottle   = 2;    //每两个瓶子换1瓶
 5     protected $uni_beer     = 2;    //每瓶2块钱
 6     protected $rs           = array();//存取结果
 7     protected $total        = 0;      //当前买了啤酒的数量
 8     protected $gai          = 0;      //当前有多少个啤酒
 9     protected $empty_bottle = 0;      //空瓶子
10
11     public function __construct($money){
12         $cur = $money / $this->uni_beer;
13         $this->total        = $cur;
14         $this->gai          = $cur;
15         $this->empty_bottle = $cur;
16     }
17
18     public function run(){
19         while($this->gai > 0 || $this->empty_bottle > 0){
20             if($this->gai >= $this->uni_gai){
21                 $this->deal_num(‘gai‘);
22             }
23             if($this->empty_bottle >= $this->uni_bottle){
24                 $this->deal_num(‘empty_bottle‘);
25             }
26
27             $this->check_overflow();
28         }
29         return $this->rs;
30     }
31
32     public function deal_num($type){
33         if($type == ‘gai‘){
34             $this->gai -= $this->uni_gai;
35         }else{
36             $this->empty_bottle -= $this->uni_bottle;
37         }
38         $this->gai++;
39         $this->empty_bottle++;
40         $this->total++;
41     }
42     public function check_overflow(){
43         if($this->gai < $this->uni_gai && $this->empty_bottle < $this->uni_bottle){
44             $this->rs[‘gai‘]          = $this->gai;
45             $this->rs[‘total‘]        = $this->total;
46             $this->rs[‘empty_bottle‘] = $this->empty_bottle;
47             $this->gai                = 0;
48             $this->empty_bottle       = 0;
49         }
50     }
51     public function _print(){
52         echo ‘gai:‘, $this->gai;
53         echo ‘<br>‘;
54         echo ‘empty_bottle:‘, $this->empty_bottle;
55         echo ‘<br>‘;
56         echo ‘total‘, $this->total;
57         echo ‘<hr>‘;
58     }
59 }
60
61 $peer = new Beer(10);
62 $rs   = $peer->run();
63 print_r($rs);

打印的结果是: Array ( [gai] => 3 [empty_bottle] => 1 [total] => 15 )

盖子 3个, 空瓶子 1个, 总共喝了15瓶啤酒

时间: 2024-12-26 19:19:46

每瓶啤酒2元,2个空酒瓶或4个瓶盖可换1瓶啤酒。10元最多可喝多少瓶啤酒? php的相关文章

10元最多可喝多少瓶啤酒?(不可借酒+可借酒)

背景 <爱情公寓5>中有个剧情:每瓶啤酒2元,2个空酒瓶或4个瓶盖可换1瓶啤酒.10元最多可喝多少瓶啤酒? 脑海模拟起来的确有点费劲.心算结果是15瓶,而剧情实践居然是20瓶!结合弹幕说的酒吧可能可以借酒,故猜测借酒使最终喝了20瓶. 如果改变拥有的钱数或啤酒价格时,答案又是什么呢? 此时,不禁想用编程的方法解决一下. 思路 分两种情况:酒吧可以借酒:酒吧不可以借酒: 酒吧不可以借酒 此时,当剩余酒盖数<4且剩余空瓶数<2时,计算就结束了 酒吧可以借酒 这种情况比较麻烦,需要考虑1

啤酒2块一瓶,4个瓶盖可换1瓶,2个空瓶可换1瓶,10块钱可以喝多少瓶?

1.编程的写法: using System; using System.Collections.Generic; using System.Text; namespace SlowX.CalcEgg { class Program { protected static string ShowStr(int theResult, int KP, int PG) { return theResult + "瓶啤酒." + KP + "空瓶." + PG + "

可以喝多少瓶啤酒

可以喝多少瓶啤酒 问题 4个瓶盖,或者2个酒瓶,可以换一瓶啤酒, 现在有10块钱,啤酒2块钱一瓶,问: 共可以喝多少瓶啤酒? 解法一 问题分析 手里有10块钱,既然要喝尽可能多的啤酒,就要买尽可能的多买,所以直接全部买成啤酒,共可买5瓶.现在共有5瓶啤酒,那么可以进行以下的操作(序号越低,优先级越高): 如果有酒,则全部喝掉: 如果有 >= 4个瓶盖,则换成 n/4 瓶啤酒: 如果有 >= 2个酒瓶,则换成 n/2 瓶啤酒: 显然,如果用程序模拟,实现起来很简单. 结果 代码: # encod

程序猿,你也配吃10元的盒饭?

“你也配吃10元的盒饭?”作者:yxixhdfqwe 又是一个阳光灿烂的中午,看了一上午的报纸,茶水也顺带喝了不少,肚子早已经咕咕作响了,今天中午吃点什么了,貌似楼下的新开张的盒饭还不错,于是我来到楼下准备买上一盒.   菜色还不错,价格有6元,8元,10元,12元,20元的,像哥这样的精英管理人才,怎么着也的吃最高级的才配合身份,就在我准备购买时,一个响亮的声音响起,   "老板,给我一份10元的盒饭",   顺势撇了一眼,一个小伙子,眉开眼笑的靠近盒饭铺,今天是1号,看样子是发工资

考考你、智商题 小明借爸爸500元 又借妈妈500元 买双鞋 970元 还剩30元 还给爸爸10元

考考你.智商题小明借爸爸500元又借妈妈500元买双鞋 970元还剩30元还给爸爸10元又还妈妈10元 自己留10元欠妈妈490 欠爸爸490490+490=980 加上自己的10元=990请问那10元去哪了 解答:还了10元,实际借款就不是500了,是490元.总借款现在已经不是1000元,而是980元.买鞋970元,还剩下10元.

javascript计算啤酒2元一瓶,4个盖换一瓶,2个瓶换一瓶,10元钱最多喝多少瓶

var n = 0//当前剩下多少瓶加上喝赢了多少瓶 var x = 5//初始多少瓶 var y = 0//除了喝掉的,剩下多少瓶 var z = 0;//总数 var arr = []//定义一个数组存放值 arr.push(x);//先把最初始瓶数添加到数组 //程序1 var fn = function(s){ y = s -4; //剩下多少瓶 s = y + parseInt(s/4) + parseInt(s/2);//剩下多少瓶加上赢了多少瓶 n = s//赋值给上面的n arr

1 元钱买一瓶汽水,两个空汽水瓶换一瓶汽水。现有 20 元钱,问最多可以喝到多少瓶汽水?

答案一:20+10+5+2+ 1+ 1= 39瓶 答案二:20+ 10+ 5+ 2+ 1+ 1+ 1= 40 一开始 20瓶没有问题,随后的 10瓶和 5瓶也都没有问题,接着把 5瓶分成 4瓶和 1瓶,前 4个空瓶再换 2瓶,喝完后 2瓶再换 1瓶,此时喝完后手头上剩余的空瓶数为 2个,把这 2个瓶 换 1瓶继续喝,喝完后把这 1个空瓶换 1瓶汽水,喝完换来的那瓶再把瓶子还给人家即可,所以最多可以喝的汽水数为: 20+ 10+ 5+ 2+ 1+ 1+ 1= 40.但是题目中并没有说可以赊账,因此

滴滴过节送10元打车券是不是bug

自从滴滴跟快的去年合作以后,也不玩烧钱大战了,也没法打到免费的车了,乘客打车优惠也少了. 但是现在的滴滴在过节的时候还是会返滴滴代金券,而且金额都比较大,超出了打车的起步价.半年前这边的司机会经常利用司机版的APP刷单,从而将滴滴跟快的的打车券赚去,虽然腾讯和阿里对“刷单”现象处理的很严,比如,同一个乘客一天不能打同样的司机版APP.同一个乘客不能每天打一个司机版APP的车.司机版APP每个月接单数量不得超过一定限制等.但是,这种“刷单”现象并未完全根除. 刷单方式,个人感觉其实是有多种,但最终

2亿用户每人一个月出10元,那就是20亿

我现在也感到无奈,明明12T资源,只能真的放弃了.下载速度拥堵很.经常断线,当初推出的时候就选择收费,那就很好了啊,免费只是一个吸引力的方法.要让云盘的近千个服务器的运营流量成本,确实非常的高,如果可以,不就是一年120元的费用 ,我还是出得起.2亿用户每人一个月出10元,那就是20亿,这么大的费用,算去成本维护等,什么说也还能赚一个亿是至少的.但是我们国家的国情是打黄打非比较多,政策如此那就是没办法了.网络云盘方便了我们的生活,虽然云盘要关闭了,我依然支持360的产品 ,我主要在于安全方面.安