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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 furuigang 于 2016-1-24 22:33 编辑

看到这样一道题目,顺手就做了下分享给大家。众位大神多多指教。求不打,求轻虐~还是以前的习惯,代码加截图,希望大家一起交流!


题目:
28人买可乐喝,3个可乐瓶盖可以换一瓶可乐,那么要买多少瓶可乐,够28人喝?
假如是50人,又需要买多少瓶可乐?(需写出分析思路)


分析思路
    A:要买够多少人喝,先一瓶一瓶的买,边买边换,直到可乐总数满足所有人喝为止
    B:可以设可乐总数为 sum,购买的瓶数用 count 来计数
    C:每购买一瓶 count 自加一,可乐总数 sum 也加一
    D:购买瓶数 count 达到三的倍数时,就可以用瓶盖再换一瓶,即总数 sum 加一
    E:按以上规律做一个循环,当可乐总数 sum 满足所有人需要时跳出循环
    F:此时的 count 值即为需要购买的瓶数


代码如下:
public class Test10 {
        public static void main(String[] args) {
                System.out.println("28人买可乐喝,需要买" + getNum(28) + "瓶可乐");
                System.out.println("50人买可乐喝,需要买" + getNum(50) + "瓶可乐");
        }
        public static int getNum(int num) {
                int sum = 0;//用于记录当前可乐总数
                int count = 0;//用于记录购买的可乐数
                while (sum < num) {
                        count++;
                        if(sum % 3 == 0)
                                sum++;
                        sum++;
                }
                return count;
        }
}




代码.png (174.7 KB, 下载次数: 100)

代码.png

40 个回复

倒序浏览
赞一个  ,很好
回复 使用道具 举报

多谢支持!
回复 使用道具 举报
黑马币竟然都这么多了
回复 使用道具 举报
刚刚光看你黑马币了,题也不错
回复 使用道具 举报
wuzeshui 发表于 2016-1-23 23:56
刚刚光看你黑马币了,题也不错

黑马币刚刚送出了18个……现在的我也只是穷人一人,不开心
回复 使用道具 举报
我也来分享下我的思路~~
  1. public class Test9 {
  2.         public static void main(String[] args) {
  3.                 while(true){
  4.                         System.out.println("----------------------------------------------");
  5.                         System.out.println("请输入要喝可乐的人数:");
  6.                        
  7.                         Scanner sc = new Scanner(System.in);  
  8.                         int pep = sc.nextInt();                        //键盘录入获取人数
  9.                
  10.                         if (pep>=998) {
  11.                                 System.out.println("贩卖可乐计算器炸了 0v0 ");
  12.                                 break;
  13.                         }
  14.                         System.out.print(pep+"人需要买");
  15.                         cola(pep);
  16.         }}
  17.        
  18.         private static void cola(int pep){  //明确喝可乐的人数=输入的人数
  19.                 int cap = 0;                                         //瓶盖数量
  20.                 int buy = 0;                                          //买可乐的人数
  21.                
  22.                 while(pep!=0){                                  //每有一个人喝到可乐,需要喝的人就自动减一,直至全体都喝到为止
  23.        
  24.                         if (cap<3) {                                //判断瓶盖满不满足3个,不满足,则买一瓶,买了就喝了
  25.                                 buy++;
  26.                                 cap++;
  27.                                 pep--;
  28.                         }
  29.                        
  30.                         if (cap==3) {                                //当瓶盖为3时,换到一瓶(瓶盖为1),给后面的逗比喝了
  31.                                 cap=1;
  32.                                 pep--;
  33.                         }
  34.                 }
  35.                 System.out.print(buy+"瓶可乐"+"\r\n");
  36.         }
  37. }
复制代码
回复 使用道具 举报
赞~~~~~~~~~
回复 使用道具 举报
赞~~~~~~~~~
回复 使用道具 举报

多谢支持
回复 使用道具 举报
梁志斌 发表于 2016-1-24 00:13
我也来分享下我的思路~~

不错不错,赞赞!
回复 使用道具 举报
furuigang 发表于 2016-1-23 23:58
黑马币刚刚送出了18个……现在的我也只是穷人一人,不开心

有没有听说过滴水之恩当涌泉相报?当初为了帮你完成目标,我送了你几个黑马币,现在是不是应该也多返还我一点?
回复 使用道具 举报
Mayer 中级黑马 2016-1-24 17:09:35
13#
好人~~~~~
回复 使用道具 举报
wuzeshui 发表于 2016-1-24 16:52
有没有听说过滴水之恩当涌泉相报?当初为了帮你完成目标,我送了你几个黑马币,现在是不是应该也多返还我 ...

那你有没有听说过“施恩不图报”?
回复 使用道具 举报

请叫本王子雷锋谢谢!
回复 使用道具 举报
你这个答案有问题,28个人19瓶就可以了,这下面的代码有点丑,不过可以修改一下,应该可以

public class Test9 {
        public static void main(String[] args) {
                //先定义一个人数,可以使用一个方法,传入人数
                coke(28);
        }
        public static void coke(int number ){
               
                //设置需要买可乐的数量为x,最大买写人数相等的数量
                f:for(int x=0;x<=number;x++){
                        //定义一个变量,得到当前数的余数
                        int yu=0;
                        //定义一个变量,得到每次可以得到换多少瓶可乐
                        int zhu=0;
                        //定义一个变量,用来计算总共可以得到多少瓶可乐
                        int num=0;
                        yu=x%3;
                        zhu=x/3;
                        num=x+zhu;
                        //这里的判断条件为,当除数写余数加起来还小于3,数量也没有等于与人数相同,那么就没必要进行循环了,进行下一个数的循环
                        while((zhu+yu)>2){
                                //定义一个变量,用来计算每次的余数与除数的和
                                int tem=0;
                                tem=zhu+yu;
                                //每次都用tem除3或模3取余,得到的数分别给除数写余数
                                zhu=tem/3;
                                yu=tem%3;
                                //将每次的除数相加,并加上当前的数x,得到与人数相等的数时,跳出循环,并得到当前的x数
                                num+=zhu;
                                if(num==number){
                                        System.out.println("需要买:"+x+",就可以得到:"+num);
                                        break f;
                                }
                        }
                        if(num==number){
                                System.out.println("需要买:"+x+",就可以得到:"+num);
                                break f;
                        }
                }
        }
}
回复 使用道具 举报 0 1
549208564 发表于 2016-1-24 20:19
你这个答案有问题,28个人19瓶就可以了,这下面的代码有点丑,不过可以修改一下,应该可以

public class T ...

你说“28个人19瓶就可以了”,那你这么算算,28个人,买19瓶可乐,按照每3个可乐瓶盖换取一瓶可乐的原则兑换的话,19个可乐瓶盖最多换几瓶可乐?  19 / 3 = 6;  19 + 6 = 25,25 < 28 ,你算算,19瓶可乐够 28 个人喝的吗?

点评

为什么6瓶不能在换两瓶呢,换两瓶后就又有了三个瓶盖,为什么不能在换一瓶呢,你说是不是  发表于 2016-1-24 22:10
回复 使用道具 举报
furuigang 发表于 2016-1-24 20:03
那你有没有听说过“施恩不图报”?

貌似没有
回复 使用道具 举报
本帖最后由 我是坏人, 于 2016-1-24 22:10 编辑

挺棒~不过稍微有点小问题,3个盖子换一瓶可乐 ,喝完之后 还会有一个盖子呢
回复 使用道具 举报
本帖最后由 我是坏人, 于 2016-1-24 22:11 编辑

  1. import java.util.Scanner;

  2. public class Demo {
  3.         /**
  4.          *         28人买可乐喝,3个可乐瓶盖可以换一瓶可乐,那么要买多少瓶可乐,
  5.                  * 够28人喝?假如是50人,又需要买多少瓶可乐?
  6.                  (需写出分析思路)
  7.                  分析:  1.键盘录入您需要喝的可乐数
  8.                           2.定义变量 lid   存储盖子数
  9.                           3.定义变量Count  存储需要购买的可乐数
  10.                           4.因为不知道买多少瓶就够喝了,循环次数不确定,所以用while循环
  11.                                                 
  12.          * */
  13.         public static void main(String[] args) {
  14.                 Scanner sc = new Scanner(System.in);
  15.                 System.out.println("请输入您要喝的可乐数");
  16.                 int sum = sc.nextInt();
  17.                
  18.                 int count=0;                        //统计需要购买的可乐数量
  19.                 int lid=0;                        //2.存储盖子数
  20.                
  21.                
  22.                 while(lid!=sum){        //假如瓶盖等于您要喝的可乐数,说明您已经够喝了.
  23.                         count++;                //购买一瓶可乐
  24.                         lid++;                        //喝完后多一个盖子
  25.                         if(lid%3==0){        //假如盖子是3的倍数,就换购一瓶可乐.喝完后盖子又多一个
  26.                                 lid++;
  27.                         }
  28.                 }
  29.                 System.out.println(count);  //输出需要购买的盖子数
  30.         }
  31. }
复制代码
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 加入黑马