首页新闻招聘找找看知识库
  • 回复:98 浏览:9687 2009-06-11 15:26 来自 本地磁盘(F:)

    有27个学生运动后,感觉口很渴,打算去买汽水喝,正好小店有个促销活动,就是三个空汽水瓶换一瓶汽水,请问要是他们每人都能喝到一瓶汽水的话,最少需要买几瓶汽水?

  • 天地不仁
    2010-04-26 09:01 天地不仁
    当然是十九瓶~
    第51楼 回到顶楼
  • SeaSunK
    2010-04-27 00:02 SeaSunK
    @蚂蚁蚂蚁
    楼上的已经解答了,其实就是一个数学公式,好像叫等比数列,n*(1+1/3+1/3*1/3+1/3*1/3*1/3+...)=27
    关键n<3
    so,
    x+x/3+x/9=27,结果取整,+1就是19.其实那个借瓶的就不用说了,按这样说,还真的不用钱,还可以一直喝下去。
    第52楼 回到顶楼
  • 尖尖角
    2010-05-03 20:24 尖尖角
    @gzl
    哈哈,那卖东西的真善良

    首先必需买3瓶才能换一瓶。现在有4个人有水喝了,还剩23个人和一个空瓶子,接下来就循环,当大于三个人时,三个人买两瓶水,人数减三,continue;否则一个人时买一瓶,两个人时买两瓶,break。所以就是 3 + (27-4)/3 * 2 + (27-4)%3 = 19;
    第53楼 回到顶楼
  • 尖尖角
    2010-05-03 20:48 尖尖角
    跟刚刚的分析
    Java Code :

    public class ChangeBottle {
    public static void main(String[] args){
    int personCount = 27;
    int drinkCount = 0;

    if(personCount >= 3){
    drinkCount = 3;
    personCount -= 4; //三个人时personCount = -1
    }else{
    drinkCount = personCount;
    }

    while(personCount > 0){ //退出循环式personCount取0或者-1
    if(personCount == 1){
    drinkCount += 1; //一个人时买一瓶
    break;
    }
    drinkCount += 2; //两个人时买两瓶,三个人时买两瓶
    personCount -= 3;
    }
    System.out.println("the number of drink is : " + drinkCount); //out : 19
    }
    }
    第54楼 回到顶楼
  • mylhei
    2010-05-05 23:47 mylhei
    @尖尖角
    高手。。。
    第55楼 回到顶楼
  • 找爱
    2010-05-21 20:10 找爱
    高啊 喊我来绝对19 我是不是很老实?
    第56楼 回到顶楼
  • 落实
    2010-05-30 15:11 落实
    不懂
    第57楼 回到顶楼
  • MaoBisheng
    2010-05-30 16:32 MaoBisheng
    18瓶
    27个人,每人喝一瓶,则有27个瓶子,那么27-27/3=18瓶
    验证一下:
    18+18/3=24
    6个空瓶子换两瓶,最后先拿一瓶喝,三个空瓶一块还老板
    第58楼 回到顶楼
  • MaoBisheng
    2010-05-30 16:40 MaoBisheng
    @④僷屮

    3个空瓶换一瓶汽水的话,那老板肯定是有赢利的,如果能多卖一些,能多赚点钱,没有不借之理
    第59楼 回到顶楼
  • 小伦
    2010-06-02 22:41 小伦
    19瓶,还多一瓶
    第60楼 回到顶楼
  • Dennis.Yang
    2010-06-03 13:26 Dennis.Yang
    最后要加个分支,人家不一定肯借
    第61楼 回到顶楼
  • CrazeCoder
    2010-06-04 16:59 CrazeCoder
    如果从回收空瓶的角度 18瓶就够了 卖家可以把卖出所有的空瓶都回收 挺环保的 双赢啊
    第62楼 回到顶楼
  • ForFreeDom
    2010-06-04 18:35 ForFreeDom
    递归算法求解!!!!!!!
    protected void Page_Load(object sender, EventArgs e)
    {
    result(27);
    }
    //递归求解num个空瓶子一共能兑换出多少瓶水
    private int bottle(int num)
    {
    //1个空瓶子,没有
    if (num == 1)
    return 0;
    //当最后剩两个空瓶子可再换一瓶,这是个隐藏的信息
    if (num == 2)
    return 1;
    return num / 3 + bottle(num / 3 + num % 3);
    }

    //水加瓶一共可以兑换出多少瓶水。
    private int howmany(int to)
    {
    return to + bottle(to);
    }

    private void result(int ques)
    {
    int temp = ques;
    //从多到少开始计算
    for (; temp > 0;temp-- )
    {
    if (howmany(temp) == ques)
    break;
    }
    Response.Write(temp.ToString());
    }
    第63楼 回到顶楼
  • ForFreeDom
    2010-06-04 20:00 ForFreeDom
    其实这个问题的本质是2个空瓶兑换一瓶水(不含瓶),题目中说的3个空瓶兑换一瓶水,之后还有一个空瓶,造成了问题的递归。所以本问题的答案可以理解为:18+18/2=27
    上面的递归算法完全可以换为:
    private int bottle(int num)
    {
    return num/2;
    }
    第64楼 回到顶楼
  • 牧野静凤
    2010-10-20 17:22 牧野静凤
    支持十九!
    第65楼 回到顶楼
  • yjig
    2010-10-28 09:20 yjig
    顶,尖尖角!
    第66楼 回到顶楼
  • 永恒之☆
    2010-10-29 13:09 永恒之☆
    @Cheese
    呵呵,同解
    第67楼 回到顶楼
  • fishall
    2010-11-11 15:33 fishall
    第68楼 回到顶楼
  • 天行健 自强不息
    2010-11-11 16:30 天行健 自强不息
    弱弱地回一个,如果可以借的话可以这样假设:
    买27瓶,用27个空瓶换9瓶,再用9个空瓶换3瓶,再用3个空瓶换1瓶
    这样看的话,多了9+3+1=13瓶,也就是说只需要买14瓶就行了


    借27瓶汽水,一人一瓶,得到27个空瓶,换9瓶,再借9个空瓶子,再换3瓶,再借3个空瓶子换1瓶,最后把13瓶还给老板,付14瓶的钱

    不过好像逻辑上有点问题。
    第69楼 回到顶楼
  • xinyu207
    2010-11-17 11:12 xinyu207
    晕 还带欠账的 那我先把店里存货都欠下来 没准老板还得给你钱

    19!!!!!!!
    第70楼 回到顶楼
  • liuxinglanyue
    2010-11-21 08:43 liuxinglanyue
    支持18瓶,最后剩下两个瓶子,向老板赊账1瓶 最终给老板三个瓶子 正好27瓶


    18+6+2+1=27
    第71楼 回到顶楼
  • 擦骨灰级菜鸟
    2010-11-22 22:42 擦骨灰级菜鸟
    我在想
    第72楼 回到顶楼
  • 擦骨灰级菜鸟
    2010-11-22 22:47 擦骨灰级菜鸟
    我在想
    3瓶换一个那就是4瓶
    27/4盛6余3
    盛6代表送的

    27-6=21
    要是可以借的话是20瓶
    要是不可以借的话是21瓶
    第73楼 回到顶楼
  • 擦骨灰级菜鸟
    2010-11-22 22:48 擦骨灰级菜鸟
    够雷的吧
    第74楼 回到顶楼
  • 擦骨灰级菜鸟
    2010-11-22 22:54 擦骨灰级菜鸟
    @天行健 自强不息
    哥们你太强了,佩服
    第75楼 回到顶楼
  • kString
    2011-06-10 19:08 kString
    3瓶换1瓶

    则3人1组,2人买,1人换。

    所以最少买的数为 人数/换的数目+人数%换的数目
    第76楼 回到顶楼
  • 小唐yuki
    2011-06-11 09:51 小唐yuki
    先假设买27瓶 我3个空瓶能换一瓶新的 这样的话就可以少买 27/3=9瓶 那么最少买18瓶即可
    第77楼 回到顶楼
  • 小唐yuki
    2011-06-11 09:55 小唐yuki
    到了商店 问老板要27瓶 大家一起喝了 喝完把瓶子 还给老板 给钱走人
    第78楼 回到顶楼
  • 刘亚
    2011-06-11 17:10 刘亚
    赞同19!缺1也要补上,哪来"借"此一说~
    第79楼 回到顶楼
  • 小唐yuki
    2011-06-14 09:29 小唐yuki
    @刘亚
    根据实际情况撒 大部分老板会答应
    第80楼 回到顶楼
  • Carl78
    2011-06-14 20:59 Carl78
    数值较小,心算也行,19吧
    数值大了,就要用公式计算了
    第81楼 回到顶楼
  • IT极客
    2011-06-18 22:23 IT极客
    考察大家能透析提问中“至少"的含义,答案是18瓶。
    分析如下:18瓶给了18个人喝;之后又可以换来6瓶给留个6个人喝;再后来换来2瓶给2个人喝;最后只留下两个瓶子,向老板借一个空瓶,凑足三个,换来一瓶,刚好够换一瓶给1个人喝,之后空瓶还于老板。
    结论:18+6+2+1==27.
    第82楼 回到顶楼
  • 无为而为
    2011-07-14 10:56 无为而为
    @Yuki Tang
    你这是3瓶免一瓶的钱,商家的促销方式是3个空瓶换一瓶,当然不能用换来的这一瓶抵钱了
    第83楼 回到顶楼
  • 要了饿死
    2011-08-25 10:01 要了饿死
    18瓶
    第84楼 回到顶楼
  • 问问
    2011-09-30 12:55 问问
    19瓶,最后还多出一瓶奖励的没人喝
    第85楼 回到顶楼
  • 坚强成长的心
    2011-10-19 16:41 坚强成长的心
    第86楼 回到顶楼
  • 飘风之鹰
    2011-10-20 14:50 飘风之鹰
    没有外援的话, 肯定是 19 瓶, 最多换得一瓶给老师喝
    有外援就难说了, 去垃圾椎捡相同的瓶子, 1瓶都不用买
    第87楼 回到顶楼
  • 水行者
    2012-01-18 17:52 水行者
    至少买21瓶,21/3+21=28;最后还多一瓶那 谁先喝完给谁
    第88楼 回到顶楼
  • 水行者
    2012-01-18 17:55 水行者
    求解,,,,,,,
    第89楼 回到顶楼
  • 水行者
    2012-01-18 17:58 水行者
    20
    第90楼 回到顶楼
  • softreference
    2012-01-19 09:14 softreference
    @梅桦
    我愿意做第28个学生
    第91楼 回到顶楼
  • wxj0224
    2012-02-21 15:25 wxj0224
    强烈支持18瓶。
    第92楼 回到顶楼
  • Sago
    2014-05-07 16:34 Sago
    你们这是讨论设计模式吗?
    第93楼 回到顶楼
  • 任圣凯
    2014-05-09 15:39 任圣凯
    呵呵,27*(2/3)就ok了
    第94楼 回到顶楼
  • 任圣凯
    2014-05-09 15:39 任圣凯
    3个人买两瓶,借一瓶,喝完3个瓶子都给店主就好了
    第95楼 回到顶楼
  • childtime
    2014-05-13 01:04 childtime
    用一元方程式就可以得到答案吧,x + 1/3x + 1/9x =27, x=18.69 四舍五入后为19瓶:)
    第96楼 回到顶楼
  • hrk蓝
    2014-05-27 22:16 hrk蓝
    第97楼 回到顶楼
登录后才能评论,请先登录注册