面試題:5隻猴子來分桃子,問總共有多少桃子 – JAVA編程語言程序開發技術文章

package cn.itcast.day22.test;

public class PeachTest {
/*
 * 面試題
 1.海灘上有一堆桃子, 有5隻猴子來分這些桃子.
  第一隻猴子來到海灘, 發現瞭桃子, 將桃子分成5份, 發現多瞭1個, 吃掉然後拿走瞭一份.
  第二隻猴子來到海灘, 又發現瞭桃子, 將剩下的桃子又分成5份, 發現還是多瞭1個, 吃掉然後拿走瞭一份.
  … 後面三隻猴子都是這麼做的
  問: 海灘上最初有多少個桃子?
 */     //兩種方法創建
 public static void main(String[] args) {
//  method1();
 
  System.out.println(peach(5));
 }
 
 public static int peach(int count) {
  int peach = 1; //最後剩一個桃子
  for (int i = 0; i < count; i++) {
   peach = peach * 5; //如果最初多四個就可以一直被5整除
  }
  return peach – 4; //最後把多出的4個減去
 }

 private static void method1() {
  outer: for (int i = 0;; i++) {    // 窮舉法www.aiwalls.com
   int count = i;      // count記住的數是0, 1, 2, 3, 4……
   for (int j = 0; j < 5; j++) {  // 每個數循環判斷5次
    if ((count – 1) % 5 == 0)  // 如果這個數能滿足吃掉1個再分成5份
     count = (count – 1) / 5 * 4; // 那麼就將桃子吃掉一個分成5份, 留下4份
    else
     continue outer;     // 如果不滿足吃掉1個再分成5份, 那麼直接外層循環進入下一次
   }
   System.out.println(i);    // 循環5次之後, 代表可以被5個猴子來分
   return;
  }
 }
 

}

 

摘自  代俊建的專欄 

發佈留言