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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

  1. /*
  2.         渔夫出海大鱼,收获若干
  3.        
  4.         1.渔夫卖掉一半的鱼,然后送给邻居海伦3条。
  5.         2.渔夫又卖掉剩下的鱼的3分之2,自己又吃了一条
  6.         3.海伦来看渔夫,问他那天打了多少鱼,渔夫数了数,家里还剩下4条,渔夫对海伦怎么说呢?
  7.        
  8. */
  9. class FishMan {

  10. public static void main(String[] args) {

  11.         sumFish();
  12. }

  13. public static void sumFish() {

  14.   int total = 8;//总共的鱼,至少有8条=邻居的海伦3条+又吃了一条 + 剩下4条
  15.   
  16.   int left = 0;//剩下的鱼
  17.   
  18.   do {
  19.    int soldleft = total / 2;//第一次卖掉一半后剩下的

  20.    int firstLeft = soldleft - 3;//送掉邻居海伦剩下的

  21.    if(firstLeft % 3 == 0){
  22.                
  23.                 left = firstLeft/3 - 1;// 三分之一里面-吃掉的一条
  24.    
  25.                 if(left == 4 ){
  26.      
  27.                         System.out.println("一共有: " + total + " 条鱼");
  28.    
  29.                 }
  30.    }
  31.    
  32.         total += 2;//刚开始能平均2份,因此鱼数必定是偶数,步长为2
  33.   } while (left != 4);

  34. }

  35. }
复制代码

5 个回复

倒序浏览
你是不是写错了!? 如果我把最后的剩下的鱼改成其他的数字例如8 160 那?!
回复 使用道具 举报
王晓杰 发表于 2014-12-31 11:59
你是不是写错了!? 如果我把最后的剩下的鱼改成其他的数字例如8 160 那?! ...

家里还剩4条鱼,为什么要把它改成8和160?剩下的不是4条鱼就继续循环...
回复 使用道具 举报
感觉思路没什么问题,运行结果也正确,暂时没有发现问题
回复 使用道具 举报
学习了:lol
回复 使用道具 举报
版主过来看看,写的真好。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马