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

© ZZT 中级黑马   /  2016-5-19 10:59  /  649 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

public class Text10 {

        /**第十题:
         *
         *28人买可乐喝,3个可乐瓶盖可以换一瓶可乐,那么要买多少瓶可乐,
         *        够28人喝?假如是50人,又需要买多少瓶可乐?(需写出分析思路)
         */
                /*思路:每次购买一瓶,达到可以兑换瓶盖的数量(即数量大于3)时;
            进行一次循环兑换(在一个while(count>3));
            兑换后可乐总数量与喝可乐人数是否相等,如果相等表示够喝了。*/
       
        public static void main(String[] args) {

                Scanner sc = new Scanner(System.in);  //创建键盘录入对象
                System.out.println("请输入人数:");
               
                int i = sc.nextInt();
               
                int num = methord(i);       // 调用计算方法     
                System.out.println(i + "个人最少需要买" + num + "瓶饮料");
        }

        public static int methord(int i) {
                int a = 1;                           // 用来循环/3,%3,的过程  
                int b = 0;                           // 用来记录共喝了多少瓶
                int c = 0;                           // 用来记录a的原始值
                while (true) {                       // a从1开始不断自增,当满足人数时,返回该值
               
                        c = a;
                        b = 0;                           // 每次循环对b值进行还原。
                        b = b + a;
                        while (a / 3 > 0) {
                                b = b + a / 3;                  // 瓶盖换的汽水数
                                a = a / 3 + a % 3;           // 换完后剩余的瓶盖数
                        }
                        // if(a%3==2)当可以先喝汽水再用三个瓶盖换时,加入这两步
                        // b++;
                        if (b >= i)
                                return c;
                        else
                                a = c + 1;
                }
        }

}

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马