A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

题目:28人买可乐喝,3个可乐瓶盖可以换一瓶可乐,那么要买多少瓶可乐,够28人喝?假如是50人,又需要买多少瓶可乐?

在论坛上见很多人对这个题的理解是需要3个瓶盖才能换一个可乐;
其大体思路可见http://bbs.itheima.com/thread-144430-1-1.html
这样解我认为是没问题的
但是在某些人数的时候买的可乐不一定就是最优的,怎么理解呢
一般思路下认为:
人数                        1  2  3
需买可乐数        1  2  3       
但实际上第三个人的第三瓶可乐需不需要买呢?实际上是不需要的,怎么理解呢:
当第二个人买了可乐后,就有2个可乐瓶盖了,如果我再去买第三瓶可乐的话,我的手上就会出现了3个可乐瓶盖,这也就多出了一瓶可乐了,那我第三瓶可乐不是白买了么???
也就是说:当我手上有2个瓶盖的时候,我就可以去和老板商量,拿2个瓶盖做信用抵押,赊一个瓶盖换可乐,这样就将手上的可乐瓶盖全部使用了,也就是说这3个人实现了资源的最大使用,可以将这3个人分为一个组,这个组内给他们买2瓶可乐就能实现组内的每个人喝到可乐;
那么n个人也就可以分为n/3组,剩下人的就是落单的,就需要每个人买一瓶,也就是说n个人需要买n/3*2+n%3瓶可乐了
所以此题可以扩展为n个人买可乐,m个可乐瓶盖换一瓶可乐,求所需可乐数,将3换成m就好了(n/m*(m-1)+n%m)
下面附上我做这个题的代码:

  1. public class Test10 {
  2.         public static void main(String[] args) throws IOException {
  3.                 BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
  4.                 while(true)
  5.                 {
  6.                         System.out.println("请输入要喝可乐的人数:");
  7.                         String string=br.readLine();
  8.                         getColaNumber(Integer.parseInt(string),3);
  9.                 }
  10.         }
  11.         //获取所需购买的可乐数;personNumber为喝可乐的人数,colaLidNumber为换一瓶可乐所需的瓶盖数
  12.         public static  void  getColaNumber(int personNumber,int colaLidNumber)
  13.         {
  14.                 int num=personNumber/colaLidNumber*(colaLidNumber-1)+personNumber%colaLidNumber;
  15.                 System.out.println(personNumber+"个人需买"+num+"瓶可乐,才够喝");
  16.         }
  17. }
复制代码



28 个回复

倒序浏览
老板给你个瓶盖还白搭进去一瓶可乐?我要是老板肯定不干;P
回复 使用道具 举报
fantacyleo 发表于 2014-9-21 23:59
老板给你个瓶盖还白搭进去一瓶可乐?我要是老板肯定不干

一定要通过严密的数学逻辑才能说服你这个固执的老板么~~~()
问:假若一瓶可乐能无限分,一个可乐瓶盖也能无限分的话?那么一个可乐瓶盖能兑换的可乐是多少呢????
一个可乐瓶盖可以兑换1/3瓶可乐+1/3的可乐瓶盖;
1/3的可乐瓶盖可以兑换1/3*(1/3瓶可乐+1/3的可乐瓶盖);
......
也就是说
1可乐瓶盖=(1/3+1/3*1/3+1/3*1/3*1/3+.....)瓶可乐(不包含可乐瓶盖)=0.5瓶可乐(不包含可乐瓶盖);
也就是说,2可乐瓶盖的价值可以兑换一个不包含可乐瓶盖的可乐了!
所以为什么第三瓶是白送的呢,是因为顾客已经先买了2瓶可乐了,这两瓶可乐的利润足够我送一瓶可乐出去了;这和商场里买2送一的促销模式有什么不一样呢?
回复 使用道具 举报
本帖最后由 fantacyleo 于 2014-9-22 16:46 编辑
笑脸迷人 发表于 2014-9-22 14:53
一定要通过严密的数学逻辑才能说服你这个固执的老板么~~~()
问:假若一瓶可乐能无限分,一个可乐瓶盖也 ...

呵呵,首先,你这个逻辑和先付后付就已经不是一回事了,你自己否定了自己的逻辑。

其次,现实中你可以拿3个瓶盖去换一瓶可乐,但不可能拿1个瓶盖去换1/3瓶可乐,也不可能拿1/3瓶可乐去换1/3瓶盖。数学只能保证在给定前提下推出逻辑上必然的结论,但无法证明前提的合理性。你的前提就不成立,推理再严密也没用。知道Banach-Tarski定理么?一个三维空间内的实心球可以分解为有限块,经过旋转和平移就可以组合出2个和原先的球一模一样的球。可这个定理不能用于现实中的球体,因为现实中的球体体积是定义在勒贝格可测集上的,而Banach-Tarski定理的前提——选择公理——允许不可测集的存在。

最后,讨论问题请勿出现”固执“这类涉及人身的字眼。毕竟,我们完全不了解对方,right?谢谢!
回复 使用道具 举报
本帖最后由 笑脸迷人 于 2014-9-23 18:04 编辑
fantacyleo 发表于 2014-9-22 16:45
呵呵,首先,你这个逻辑和先付后付就已经不是一回事了,你自己否定了自己的逻辑。

其次,现实中你可以拿3 ...


一、如果你认为“固执”这样的字眼是对你的人身攻击,我道歉;
二、如果你是没有仔细看我的回复就回复的话,我也希望你能尊重我,认认真真的看一下我的表达后,明白了我要表达的意思后再回复;
        我说的是假若可乐可分,我想证明的不是可乐在现实中可不可分,而是证明 2个可乐瓶盖的价值是可以换一瓶没有瓶盖的可乐
三、你让我知道了Banach-Tarski定理,我很高兴;不过我认为这个定理和这个题中是无关的:3个瓶盖可以换一瓶完整的可乐;那么瓶盖就具有价值,这个价值我们是可以用货币表示的(或者说是可以用银行账户上的数字来表示~~~,这样可以分了么~~~!);
四、先付后付;和老板A商量后,先赊账喝了一瓶可乐;拿到3个可乐瓶盖,(去老板B那里换一瓶新可乐回来);将这瓶可乐还给老板A;
                        和黑马老板商量,先赊账学习,得到工作后,(去老板B那里工作,赚取学费);将学费还给老板~~~;
五、谢谢你对本帖的支持~!
回复 使用道具 举报
笑脸迷人 发表于 2014-9-23 18:03
一、如果你认为“固执”这样的字眼是对你的人身攻击,我道歉;
二、如果你是没有仔细看我的回复就回复的 ...

你可以不断修补你的“意思”,就像你这次回复又引入了老板B和银行账户,下次还可以引入上帝,anyway。我应当也只能评价你的文字本身的逻辑,我看到的是你明明白白写着”假若一瓶可乐能无限分,一个可乐瓶盖也能无限分“,如果你觉得要证明的是价值,那之前又何必”假若“呢?直接来个货币可分好了。你的文字承载不了你的“意思”,那似乎不是我要关心的问题。

没看懂别人意思就回复的恰恰是你。我写得明明白白,引用Banach-Tarski定理是告诉你“前提不成立,推理再严密也没用”,不要看到都有“可分”二字就脑补分球和分瓶盖的联系。用一个现实中不成立的前提去证明一个现实问题,你要觉得合适我也没话说。我只能指出这一事实,至于如何解读事实,你随意。


我说的“你这个逻辑”再清楚不过指的是你论证2个瓶盖价值的逻辑,而你则用一个莫名其妙多出来的B老板肯定了我说的“你这个逻辑和先付后付不是一回事”。因为即便2瓶盖不值1瓶可乐,你也可以商量先佘后还。甚至,按你的2瓶盖值1可乐的逻辑,你可以直接跟老板要一瓶了,等价交换咯,佘啥?

最关键的问题是,你从一个不成立的前提推出的“2瓶盖值1可乐”结论细思恐极。你在不知不觉中从3瓶盖值1可乐的已知条件“证明”了2瓶盖值1可乐,按你之前的“严密数学逻辑”过程,还可以从2瓶盖值1可乐推出1瓶盖值1可乐,从1瓶盖值1可乐推出1瓶盖值。。。(发散级数,我不知道该怎么说了)。而这一系列荒诞的结论源于你对原题目的“灵活”脑补。
回复 使用道具 举报
fantacyleo 发表于 2014-9-23 19:27
你可以不断修补你的“意思”,就像你这次回复又引入了老板B和银行账户,下次还可以引入上帝,anyway。我 ...

不要断章取义~~
我说的是: 2个可乐瓶盖的价值是可以换一瓶没有瓶盖的可乐
看明白了~~~前辈
为什么你不能仔细看看别人写的呢~
注意一瓶完整的可乐是包括可乐和可乐瓶盖的!!

我所说的假设是为了说明白而已,我上一个回复也应该说的很明白了,如果要举例符合Banach-Tarski定理,就像我上一个回复说的将可乐瓶盖兑换成价值数字就好了。

如果你要说明的是我的回复论证不是严谨的,我承认不是很严谨,举例不过是为了论证

如果你能根据我的推理推出 1个瓶盖换一瓶可乐,那么我就真的认为你没认真的看我的回复了
回复 使用道具 举报
你们三个资源到是最大化了 当老板是傻子呢? 你买了三瓶 兑换后 你手里就还有一个 再买两瓶就又能换了 扔了可惜,这样老板可以让你有更大的再次购买兑换的欲望。你觉得老板能答应么? 要是你是老板 你答应么
回复 使用道具 举报
为什么2个可乐瓶盖就可以喝一瓶可乐呢?
3个可乐瓶盖可以换一瓶可乐=喝的可乐+可乐瓶盖
3瓶盖=一瓶完整可乐(可乐+可乐瓶盖)
2瓶盖=可乐
~~~~不用想的太复杂了
回复 使用道具 举报
               
              
这道题也就是一个用4行代码就能解决的问题。为什么大家都搞这么复杂。
                int i; int j=0;
                for(i=1;(i+j+1)<=28;i++)
                {
                        j=i/2;
                }
                System.out.println(i+1);
回复 使用道具 举报
18643448863 发表于 2014-9-23 21:07
你们三个资源到是最大化了 当老板是傻子呢? 你买了三瓶 兑换后 你手里就还有一个 再买两瓶就又能换了 扔了 ...

当然一般的顾客是不会去理会的啦,既然是3瓶盖换一瓶可乐,当然要遵循规则;所以作为解题者就要充分为出题者考虑了,怎么和老板去沟通协商就是解题者要考虑的?

如果我是老板,你和我又很熟,我当然愿意了,毕竟可乐瓶盖可换就代表了价值,还加速了出货,减少库存
毕竟可乐瓶盖还是要拿去和厂家兑换的~:lol
回复 使用道具 举报
我曾经做过这样的数量关系题,这样类型的题的解题思路和楼主说的一样,不过当时我们是这样理解的,1瓶可乐=1个瓶盖+1瓶可乐水;由 3个可乐瓶盖=1瓶可乐 得出 3个可乐瓶盖 = 1个瓶盖+1瓶可乐水;即 2个可乐瓶盖 = 1瓶可乐水;2个可乐瓶盖 +2瓶可乐水 = 1瓶可乐水 + 2瓶可乐水;即 2瓶可乐 = 3瓶可乐水;够多少人喝就是需要多少可乐水,50人就是需要50瓶可乐水 ,50/3=16余2;16*2+2就是需要买的可乐的瓶数。关于2瓶可乐 = 3瓶可乐水理解,其实就是买2瓶可乐 然后向老板借一个可乐瓶盖 ,用3个瓶盖换一瓶可乐,然后再还老板一个可乐瓶盖。
回复 使用道具 举报
笑脸迷人 发表于 2014-9-23 20:53
不要断章取义~~
我说的是: 2个可乐瓶盖的价值是可以换一瓶没有瓶盖的可乐
看明白了~~~前辈

没认真看帖就回帖的是你啊,朋友。“2个瓶盖兑换一瓶无盖可乐”不就是“老板给你个瓶盖还白搭进去一瓶可乐”么?得,绕了一圈又回到原点了。或者你想说这样一个场景:

顾客:老板你看我这严密的数学逻辑,2个瓶盖的价值就相当于一瓶无盖可乐,咱俩商量商量你先赊我一个瓶盖。。。
老板:等会,你先给我去找个老板肯让你用2个瓶盖换一瓶可乐,盖子他留下,再回来跟我说赊账的事。

╮( ̄▽ ̄)╭ 

老板说3个瓶盖换1瓶,当然是要赚你2瓶的钱。顾客从自身角度出发最大化自身利益当然没问题,但非要挖空心思不惜违背现实前提论证出个合理性来,有这个必要么?顾客可以一厢情愿,但不要低估老板的智商。还是那句话:用现实中不成立的前提去证明一个现实问题,你要觉得合适我真没话说。

回复 使用道具 举报
楼上就说楼主结果对不对吧?我觉得楼主解法还是简单明了。
回复 使用道具 举报
Seven` 来自手机 中级黑马 2014-9-24 10:14:50
15#
赞一下,这样就直接解决问题根本了
回复 使用道具 举报
Seven` 来自手机 中级黑马 2014-9-24 10:17:40
16#
想回复13楼,不过爪机不能盖楼回复,小时候买汽水都是直接要多少瓶,喝完一块给钱的,我想说的是,可以直接喝完换饮料,然后还给老板
回复 使用道具 举报
九零零 发表于 2014-9-23 21:38
我曾经做过这样的数量关系题,这样类型的题的解题思路和楼主说的一样,不过当时我们是这样理解的,1瓶可乐= ...

其实怎样理解都可以的,不过有个前辈一直认为这和现实不符合,说我把老板看的太笨了,毕竟角度不一样,结论就不知道会怎样了~
回复 使用道具 举报
最大资源化,两个瓶子赊账兑换,现实中老板会同意么,但是就与这道题的角度看来,这个答案是实现的结果还是很可观的
回复 使用道具 举报
fantacyleo 发表于 2014-9-23 22:23
没认真看帖就回帖的是你啊,朋友。“2个瓶盖兑换一瓶无盖可乐”不就是“老板给你个瓶盖还白搭进去一瓶可乐 ...

现实中这些老板是很常见的:在超市中很常见的一些产品的促销买2送1之类,比如买啤酒一扎送2瓶等
如果你认为3瓶盖换一瓶可乐和 买2送1的思路不一样的话 我就不说了~~~

上面的回复也证明了 2个可乐瓶盖的价值是和一个无盖可乐等值的;这样的等价交换为什么就不可以呢?如果你要忽视了在现实中常存买2送1的促销的话,我无话可说

如果你还是认为不行的话,那么只有去找个   对象  来封装这个说服工作吧,~~~我调用就好了~~

还有就是如果你真当了老板,希望你能了解下库存对成本的影响。
回复 使用道具 举报
CC_gogo 发表于 2014-9-24 13:06
最大资源化,两个瓶子赊账兑换,现实中老板会同意么,但是就与这道题的角度看来,这个答案是实现的结果还是 ...

如果你也真的认为现实中的老板不能同意的话,那么就将这个说服工作交给专业人员去做吧~~我调用这个专业人员的方法就好了~~~

点评

话说到这个份上,何异于:如果你真认为永动机不存在的话,那就将这个制造工作交给民科去做吧,我负责按开关就好了  发表于 2014-9-24 13:49
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 加入黑马