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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© hnyzhlq 中级黑马   /  2015-7-11 16:41  /  907 人查看  /  9 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 hnyzhlq 于 2015-7-11 16:42 编辑

/**
* 10、28人买可乐喝,3个可乐瓶盖可以换一瓶可乐,那么要买多少瓶可乐,够28人喝?
* 假如是50人,又需要买多少瓶可乐?(需写出分析思路)
*/
/*
* 思路:
* 假设买x瓶可乐通过瓶盖换取可以够y个人喝,y等于人数就够喝了。
* 从1开始,递加x,直到y等于人数,此时的x就是需要求的值。
*
* 再考虑怎么由x计算y,设置瓶盖数等于x,当瓶盖数大于等于3就可以换可乐,
* 每换一轮可乐,新的瓶盖数为换的可乐数加上之前瓶盖数除以3剩下的瓶盖。
* 知道瓶盖数小于3,不能换可乐,在递加之前换的可乐总数就是y值。
*
* 特殊的:
* 剩下2个瓶盖依然可以换一瓶可乐,将换来的可乐和剩下的瓶盖都换回去,剩下0瓶盖。
* */
  1. import java.io.*;
  2. public class Test10 {
  3.         public static void main(String[] args) throws IOException
  4.         {
  5.                 //键盘录入人数,并将人数赋给常量P
  6.                 //经过录入28和50,分别计算得到29人需要买19瓶可乐,50人需要买34瓶可乐
  7.                 System.out.println("请输入人数:(>0)");
  8.                 BufferedReader br =
  9.                                 new BufferedReader(new InputStreamReader(System.in));
  10.                 final int P = Integer.parseInt(br.readLine());
  11.                 //定义变量
  12.                 int y = 0;
  13.                 int x = 0 ;
  14.                 int i = 0;
  15.                 //当计算人数等于实际人数满足要求结束循环
  16.                 while(!(y == P)){
  17.                         x++;
  18.                         y = x;
  19.                         i = x;
  20.                         //瓶盖换饮料算法
  21.                         while(i>2){
  22.                                 y += i/3;
  23.                                 i = i/3+i%3;
  24.                         }
  25.                         //特殊的:还有2个瓶盖而可乐不够喝时,尝试再换一瓶
  26.                         if (y < P&&i == 2){
  27.                                 y++;
  28.                                 i=0;
  29.                         }
  30.                 }
  31.                 //输出结果
  32.                 System.out.println(P+"个人需要买"+x+"瓶可乐,剩余"+i+"个瓶盖");
  33.                 br.close();
  34.         }

  35. }
复制代码



评分

参与人数 1黑马币 +2 收起 理由
xiaoqiang01 + 2

查看全部评分

9 个回复

倒序浏览
不错,赞一个先。加油!
回复 使用道具 举报
这道题最主要的是思路,只有思路,还是挺好写出来的。
回复 使用道具 举报
学习了~~~~~~
回复 使用道具 举报
很形象的一道题,,赞一个
回复 使用道具 举报
不错,赞一个
回复 使用道具 举报
杨基米德 来自手机 中级黑马 2015-7-12 07:43:08
7#
有一种函数运算题的即视感~
回复 使用道具 举报

值得借鉴一下!!!
回复 使用道具 举报
430422 中级黑马 2015-7-12 08:27:20
9#
牛啊,大神啊!
回复 使用道具 举报
学习了,感谢
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马