關於一道簡單的智力題

有幸遇到了一些智力題。

 

題目1(限時一分鐘):
袋子裏有若干個球,每次拿出其中的一半再放回一個球,一共這樣做了489次,袋中,還有2個球,問:原來袋中有多少個球?


答:


第一次: n/2+1
第二次:(n/2+1)/2+1  =n/2^2+1/2+1
.
.
.
第i次:  n/2^i+1/2^(i-1)+1/2^(i-2)+...+1/2+1  (第二項到1爲比例爲1/2的等比數列)

n/2^i+1/2^i-1+1/2^i-2+...+1/2+1=n/2^i + (1-1/2^i)/(1-1/2)=n/2^i+2-1/2^(i-1)=2  =》n/2^i=1/2^(i-1) s=>n=2

 

題目2(限時一分鐘) :

袋子裏有若干個球,每次拿出其中的一半再放回一個球,一共這樣做了5次,袋中還有3個球,問:原來袋中有多少個球?

n/2^i+2-1/2^(i-1)=3 => n=2^i+2=> n=34

 

程序:

       

public class Test {

	/**
	 * 獲取原始總數量
	 * @param times   取出次數
	 * @param remainCnt 最後剩餘數量
	 * @return
	 */
	public int getCnt(int times,int remainCnt){
		int count=remainCnt; 
		if(times==0||remainCnt==0){
		    return 0;
		}

		for(int i=0;i<times;i++){
			count=(count-1)*2;
			
		}
		return count;
	}
	
	public static void main(String[] args){
		Test t=new Test();
		int cnt=t.getCnt(485,2);  // 取出485次,剩2個
		int cnt2=t.getCnt(5,3);  //  取出5次,剩餘3個 
		System.out.println(cnt);//輸出結果是 2
		
		System.out.println(cnt2);//輸出結果是,答案34 
	}
}


 【2016 -12 -18 comment 】:

       袋子裏有 T 個球,每次拿出其中的一半再放回一個球,一共這樣做了n次,袋中還有K個球,問:原來袋中有T 是多少?

       總結: T=(K-2)* 2^n +2 

   T :原來球的總數

   K:剩餘球的數量

   n:   操作次數



 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章