两个瓶盖换一瓶可乐问题
来源:互联网 发布:皮下脂肪怎么减 知乎 编辑:程序博客网 时间:2024/04/27 14:50
问题描述
无意间想起了这样一个问题:
一块钱可以买1瓶可乐,两个瓶盖子可以又可以换一瓶可乐,问,现在有十块钱,最多可以喝多少瓶可乐?
背景
相信这个问题应该有不少人问过,而且,面试编程的时候居然也有人问这种问题。刚认真思考了一下,得出答案如下:
方法一
分析:
首先,10块钱一次性可以买10瓶,单拿出一瓶,而从剩下的9瓶中,每次拿出一个瓶盖和这个瓶盖就可以再换一瓶可乐,并且得到一个瓶盖,即,一共可以换得:
1+2*(10-1)=19(瓶)
如果是y元,那则一共可以换得:
1+2*(y-1)=2*y-1(瓶)
似乎,这样就算做完了,那么问题来了,如果现在是2块钱一瓶呢?这个问题可以划归为1块钱一瓶,而一共有[y/2]
的问题,中括号是取整的意思。
那再进一步扩展,那如果是三个瓶盖换一瓶可乐呢?咋一看问题似乎有点复杂,我第一时间的想法是:
直接按照正常人的思维,10块钱可以买10瓶,然而得到的盖子可以换3瓶可乐,并且剩余一个盖子,再把剩下的这个盖子和新得到的3个盖子换1瓶可乐,剩余1+1=2个盖子,如此往复,当剩余的盖子数目小于3时,程序终止。
如下过程:
10 % 3 = 3......1(3+1) % 3 = 1......1(1+1) <3, 程序终止。 //最后得到10+3+1个盖子。
代码我就不上了,很简单,可以用递归或者循环解决。
但是再仔细一想,这个应该也可以求得其通项。
分析:
一次性可以买10瓶,先拿出1个盖子,剩下得9=2*4+1个盖子,每两个盖子和这个盖子组合就可以换一瓶新的可乐,并且得到一个新盖子,即一共还可以再换得4瓶,最后剩余两个盖子,最后,一共可以换得:
10 + [(10-1)/2] = 14(瓶)
相应的,如果时k个盖子可以换一瓶可乐,n元可以换得的瓶子数的通项就是:
n+[(n-1)/(k-1)] //中括号表示取整
再进一步扩展,如果除了盖子,空的瓶子也能换可乐呢?比如 m个瓶子换一瓶可乐,那通项应该是:
n+[(n-1)/(k-1)] +[(n-1)/(m-1)]
当然还可以继续扩展其他的问题。个人感觉只要静心思考,应该都能想出来的。这里就不再叙述了。
说点题外话,刚看完一部电影,《怦然心动》,很经典的电影了,很好看,不过跟之前想想的不同,大家想看的可以点击这里
- 两个瓶盖换一瓶可乐问题
- 28人买可乐喝,3个可乐瓶盖可以换一瓶可乐
- 28人买可乐喝,3个可乐瓶盖可以换一瓶可乐,那么要买多少瓶可乐
- 喝可乐问题,2个空瓶换一瓶可乐
- 瞎玩 - 一瓶啤酒2块,两个瓶盖送一瓶,四个空瓶换一瓶。20元一共可以喝几瓶
- 28人买可乐喝,3个可乐瓶盖可以换一瓶可乐,那么要买多少瓶可乐,够28人喝?
- :3个瓶盖可以换一瓶可乐,一共有28个人,要保证每个人一瓶,请问最低需要买多少瓶可乐呢?
- 可乐瓶盖问题
- 【编程】两元一瓶饮料,两个空瓶子换一瓶饮料,四个瓶盖换一瓶饮料。求:10元最多能喝到几瓶饮料?
- 28人买可乐喝,3个可乐瓶盖可以换一瓶可乐,那么要买多少瓶可乐,够28人喝?假如是50人,又需要买多少瓶可乐?
- 28人买可乐喝,3个可乐瓶盖可以换一瓶可乐,那么要买多少瓶可乐,够28人喝?假如是50人,又需要买多少瓶可乐?
- 28人买可乐喝,3个可乐瓶盖可以换一瓶可乐,那么要买多少瓶可乐,够28人喝?假如是50人,又需要买多少瓶可乐?
- 28人买可乐喝,3个可乐瓶盖可以换一瓶可乐,那么要买多少瓶可乐,够28人喝?假如是50人,又需要买多少瓶可乐?(解读误区)
- 瓶盖换饮料问题
- 啤酒2元一瓶,四个瓶盖可换一瓶啤酒,2个空瓶也可换一瓶啤酒
- java面试题 :买可乐问题,5个空瓶可换一瓶可乐,问n个人买几瓶?
- 一瓶可乐一块钱,三个空瓶子可以换一瓶可乐,如果现在有m块钱,能换多少瓶可乐。
- 关于一瓶啤酒2元,4个瓶盖换1瓶,2个空瓶换1瓶,10元能喝多少瓶的问题求解
- 【HDU 5402】Travelling Salesman Problem(构造)
- Oracle ADRCI工具的使用
- ListView异步加载图片
- 拷贝构造函数的参数为什么是引用
- 数据结构基本概念
- 两个瓶盖换一瓶可乐问题
- GDOI2016模拟8.18的士
- 【分享】纯爱调教神作 萝莉调教计划NaturalAnotherOneNatural Another One+Natural Another One 2nd
- 第88讲:Scala中使用For表达式实现map、flatMap、filter学习笔记
- ubuntu开机屏幕发暗,设置开机自启动设置亮度
- HDU2119Matrix(最小点集覆盖)
- 生产环境中跨节点隔离网络构架解析
- 华为OJ(字符串分隔)
- Poj 1061青蛙的约会 扩展欧几里德