1000瓶汽水,每喝3瓶赚一瓶,最终喝了多少瓶,剩几个空瓶?

灵雨飘零 2011-09-21 08:40:41
题目:共有1000瓶汽水,每喝完后一瓶得到的一个空瓶子,每3个空瓶子又能换1瓶汽水,喝掉以后又得到一个空瓶子,问总共能喝多少瓶汽水,最后还剩余多少个空瓶子?
...全文
2783 147 打赏 收藏 转发到动态 举报
写回复
用AI写文章
147 条回复
切换为时间正序
请发表友善的回复…
发表回复
mtcapple 2013-11-25
  • 打赏
  • 举报
回复
一瓶饮料最终能带来的量值是:1+(1/3)+(1/3)*(1/3)+(1/3)*(1/3)*(1/3)+...= 1/(1 - 1/3) = 3/2,本质上是公比小于1的无限等比数列的和。即每买1瓶饮料最终能带来1.5瓶饮料的实际引用量。故1000瓶饮料最终能喝1000 * 1.5 = 1500瓶,剩0个空瓶。
mtcapple 2013-11-25
  • 打赏
  • 举报
回复
一瓶饮料最终能带来的量值是:1+(1/3)+(1/3)*(1/3)+(1/3)*(1/3)*(1/3)+...= 1/(1 - 1/3) = 3/2,本质上是公比小于1的无限等比数列的和。即每买1瓶饮料最终能带来1.5瓶饮料的实际引用量。设应当买N瓶饮料,则 N * (3/2) = 27 那么 可求得N = 18(瓶)。 本题刚好是理想状态,如果改一下,28个人的话,N 就等于 19 了。不然达不到要求了。实际上,更精确地方程式应当是:求得整数N的最小值,满足不等式 N * (3/2) ≥ 27
随心录123 2011-09-27
  • 打赏
  • 举报
回复
[Quote=引用 33 楼 imfor 的回复:]
我赌你能喝10瓶,你若能喝50瓶我愿意帮你照顾妻儿
[/Quote]
我比较愿意照顾妻女
fy_study 2011-09-27
  • 打赏
  • 举报
回复

<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>1000瓶汽水,每喝3瓶赚一瓶,最终喝了多少瓶,剩几个空瓶</title>
<script type="text/javascript">
function count(){
var emptyBottle=0;//空瓶子变量
var fullBottle =parseInt(document.getElementById("txtCount").value);//得到汽水总数
var tempfullbottle =parseInt(fullBottle);//汽水临时变量
var tempemptybottle =0;
while(fullBottle>1){
fullBottle -=1;//汽水总数减1
emptyBottle+=1;//空瓶子总数加1
if(emptyBottle==3){
tempfullbottle+=1;//临时变量加1
tempemptybottle+=emptyBottle;//临时总空瓶子加1
fullBottle+=1;//如果空瓶子等于3,换一瓶满的
emptyBottle=0;//清空空瓶子重新开始
}
}
alert("总共喝了:"+tempfullbottle+" 瓶 总共空瓶子:"+tempemptybottle+" 剩余空瓶子:"+emptyBottle);
}
</script>
</head>
<body>
<input id="txtCount" name="txtCount" type="text" />瓶<br />
<input id="btnCount" type="button" value="计算" onclick="count();" />
</body>
</html>


呵呵。刚才马虎了一下,while应该>=1而不是大于1.
重新计算
总共喝了:1499 瓶 。总共空瓶子:1497瓶。剩余空瓶子:2瓶

哎。可以说是闲的蛋疼了写的玩的
fy_study 2011-09-27
  • 打赏
  • 举报
回复

<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>1000瓶汽水,每喝3瓶赚一瓶,最终喝了多少瓶,剩几个空瓶</title>
<script type="text/javascript">
function count(){
var emptyBottle=0;//空瓶子变量
var fullBottle =parseInt(document.getElementById("txtCount").value);//得到汽水总数
var tempfullbottle =parseInt(fullBottle);//汽水临时变量
var tempemptybottle =0;
while(fullBottle>1){
fullBottle -=1;//汽水总数减1
emptyBottle+=1;//空瓶子总数加1
if(emptyBottle==3){
tempfullbottle+=1;//临时变量加1
tempemptybottle+=emptyBottle;//临时总空瓶子加1
fullBottle+=1;//如果空瓶子等于3,换一瓶满的
emptyBottle=0;//清空空瓶子重新开始
}
}
alert("总共喝了:"+tempfullbottle+" 瓶 总共空瓶子:"+tempemptybottle+" 剩余空瓶子:"+emptyBottle);
}
</script>
</head>
<body>
<input id="txtCount" name="txtCount" type="text" />瓶<br />
<input id="btnCount" type="button" value="计算" onclick="count();" />
</body>
</html>


算出来应该是:
总共喝了:1499 瓶 。总共空瓶子:1497瓶。剩余空瓶子:1瓶
  • 打赏
  • 举报
回复
[Quote=引用 141 楼 belfast 的回复:]
我手工计算的结果是共可以喝1499瓶汽水,没有剩下空瓶子,正好全部兑换光了。
[/Quote]

呵呵,如果不能借个瓶子来凑数(之后再还一个瓶子)的话,最后不可能不剩下瓶子。
belfast 2011-09-26
  • 打赏
  • 举报
回复
我手工计算的结果是共可以喝1499瓶汽水,没有剩下空瓶子,正好全部兑换光了。
CaiKanXP 2011-09-26
  • 打赏
  • 举报
回复
其实楼76 正解。36补充。

[Quote=引用 76 楼 zyf850 的回复:]

每2个空瓶子找老板借一瓶喝掉~再还3个瓶子
1000+1000/2=1500
[/Quote]

[Quote=引用 36 楼 qiyongjun2003 的回复:]

1499余2 如果老板允许先借一瓶还3个空瓶的话 就是1500余0 不过 这样的老板除非是你亲戚…………
[/Quote]
shenjiaqin 2011-09-25
  • 打赏
  • 举报
回复
int count = 1000;
int empty = 0;
int drink= 0;
while(count >0)
{
drink++;
count--;
empty++;
if (empty==3)
{
count++;
empty = 0;
}
}
Console.Write("剩余的空瓶子:");
Console.WriteLine(empty);
Console.Write("喝的饮料数:");
Console.WriteLine(drink);
Console.ReadKey();
a707000646 2011-09-25
  • 打赏
  • 举报
回复
题目一般一般滴,对于程序员来说
renyiqiu 2011-09-25
  • 打赏
  • 举报
回复
[Quote=引用 63 楼 cr225cr225 的回复:]
C# code


int all = 1000; //总瓶数
int drink = 0; //已经喝掉的数量
int empty = 0; //最后剩余空瓶子
while (all > 0)
{
all--;
drink++;
empty++;
if (empty == 3)
{……
[/Quote]
++
韩大先生1 2011-09-24
  • 打赏
  • 举报
回复
[Quote=引用 108 楼 ltcszk 的回复:]

[/Quote]
唉……我较真了,‘路过的小学生’你的公式错掉了。
x-1000=x/3
3x-1000*3=x
3x=x+3000
2x=3000
x=1500

显然1500是错误了。你这个方程也太不严谨了……
永动bug制造机 2011-09-24
  • 打赏
  • 举报
回复
[Quote=引用 48 楼 sp1234 的回复:]
借一瓶汽水的老板好像还没有出生呢,但是可以借一个空瓶子的老板好像大有人在哦。
[/Quote]

p哥 见解独到啊。
韩大先生1 2011-09-24
  • 打赏
  • 举报
回复
[Quote=引用 108 楼 ltcszk 的回复:]

[/Quote]
笑瘫。遇到这种情况纯属职业病。
韩大先生1 2011-09-24
  • 打赏
  • 举报
回复
[Quote=引用 104 楼 sp1234 的回复:]
引用 99 楼 jinxiu0406 的回复:
不过到剩下 4瓶的时候 ,4-3=1,返回 1 ,1+1=2,没得换了,所以余下 2瓶,少交换1 次 500-1=499次,1000+499=1499,余下2瓶。


我觉得你这个没有交代清楚。举个反例,“不过到剩下 5瓶的时候 ,5-3=2,返回 1 ,2+1=3,还可以换一次,所以余下 1瓶。”,结果得出相反结论了。



唉,我……
[/Quote]
你这样理解错了,4是2的倍数,前面每次减2,所以才有4,不会出现其他数。
韩大先生1 2011-09-24
  • 打赏
  • 举报
回复
[Quote=引用 103 楼 sp1234 的回复:]
引用 99 楼 jinxiu0406 的回复:
沙弥搞笑? 三瓶换一瓶,不就是 -3+1=-2,每次减二瓶,1000/2=500 次减完,不过到剩下 4瓶的时候 ,4-3=1,返回 1 ,1+1=2,没得换了,所以余下 2瓶,少交换1 次 500-1=499次,1000+499=1499,余下2瓶。


直接用 999/2=499岂不是更直接。
[/Quote]
这个理解也不错呢。
潇洒王子 2011-09-23
  • 打赏
  • 举报
回复
瓶子伤不起,汽水更伤不起
iCan.club 2011-09-23
  • 打赏
  • 举报
回复
[Quote=引用 114 楼 cynixway 的回复:]

引用 8 楼 zxhandyou110 的回复:

不是1就是2,不想算

不针对题目,0,1,2
[/Quote]
我错了,1,2
iCan.club 2011-09-23
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 zxhandyou110 的回复:]

不是1就是2,不想算
[/Quote]
不针对题目,0,1,2
seafly521 2011-09-23
  • 打赏
  • 举报
回复
木有写程序,就在纸上加了一下
喝了1522瓶
剩下2个空瓶子
加载更多回复(126)

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧