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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Ice丶wj 中级黑马   /  2014-6-27 13:18  /  1254 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

28人买可乐喝,2个瓶盖能换一瓶新可乐,3个可乐瓶盖可以换一瓶可乐,那么要买多少瓶可乐,够28人喝?假如是50人,又需要买多少瓶可乐,这题怎么做?
感觉可以无限喝的说

5 个回复

倒序浏览
2个瓶盖能换一瓶新可乐,3个可乐瓶盖可以换一瓶可乐???没看明白
回复 使用道具 举报
001可望成功 发表于 2014-6-27 13:24
2个瓶盖能换一瓶新可乐,3个可乐瓶盖可以换一瓶可乐???没看明白

修改一下,是两个空瓶可以换汽水,三个瓶盖换汽水
回复 使用道具 举报
若是两个空瓶换汽水,三个瓶盖换汽水。换过后的汽水瓶和汽水瓶盖是换不了的吧!不可能是无限喝的。。。。
回复 使用道具 举报
先买3瓶,3个瓶3个盖,最多可以换2瓶,还剩1个瓶,够5个人喝;换的2瓶可乐有2个瓶和2盖,共3个瓶2个盖,2个瓶又能换一瓶可乐,够6个人喝,还剩2瓶2盖,又能换一瓶可乐够7个人喝,还剩1个瓶和2个盖,此时要在多买一瓶可乐。。。能给你画个图就好了,有规律的,最后是9瓶。
回复 使用道具 举报
本帖最后由 黎志勇 于 2014-6-28 19:06 编辑
  1. public class BuyColaEvent {
  2.     public static void main(String[] args) {
  3.         buyCola(28);
  4.         // buyCola(50);
  5.     }

  6.     public static void buyCola(int man) {// man为要喝可乐的人数
  7.         // 买的数目,喝了的人数,空瓶数,瓶盖数
  8.         int buyCount = 0, drinkedCount = 0, emptyBottle = 0, cap = 0;
  9.         while (drinkedCount < man) {
  10.             buyCount++;
  11.             drinkedCount++;
  12.             emptyBottle++;
  13.             cap++;
  14.             System.out.println("买第" + buyCount + "瓶,剩下" + emptyBottle + "个空瓶,"
  15.                     + cap + "个瓶盖,第" + drinkedCount + "人喝到可乐");
  16.             while (emptyBottle >= 2 || cap >= 3) {
  17.                 if (emptyBottle >= 2) {
  18.                     emptyBottle = emptyBottle - 1; // 2空瓶兑换1可乐,得到1个空瓶,折合少了1空瓶
  19.                     drinkedCount++;
  20.                     cap++; // 喝完多一个瓶盖
  21.                     System.out.println("\t" + "2空瓶兑换1可乐,剩下" + emptyBottle
  22.                             + "个空瓶," + cap + "个瓶盖,第" + drinkedCount + "人喝到可乐");
  23.                 }
  24.                 if (cap >= 3) {
  25.                     cap = cap - 2; // 3瓶盖兑换1可乐,得到1个瓶盖,折合少了2个瓶盖
  26.                     drinkedCount++;
  27.                     emptyBottle++; // 喝完多一个空瓶
  28.                     System.out.println("\t" + "3瓶盖兑换1可乐,剩下" + emptyBottle
  29.                             + "个空瓶," + cap + "个瓶盖,第" + drinkedCount + "人喝到可乐");
  30.                 }
  31.             }
  32.         }
  33.         System.out.println(man + "个人,需要买" + buyCount + "瓶");
  34.     }
  35. }

复制代码
其实很简单,一瓶一瓶地买,凑够数就立即换,把这个过程用程序来表达出来就行。中间那些输出语句可以注释掉,我用来看过程的,剩下最后一个结果就行。

评分

参与人数 1技术分 +1 收起 理由
菜小徐 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马