時間限制: 1sec 記憶體限制: 128mb居然有假幣!!!
事情是這樣的,現在豬肉漲了,但是農民的工資卻不見漲啊,沒錢怎麼買豬肉啊。老王這就去買豬肉,結果找來的零錢中有假幣!!!可惜老王一不小心把它混進了一堆真幣裡面去了。現在知道假幣的重量比真幣的質量要輕。給你乙個天平,請用最快的時間把那個可惡的假幣找出來。
輸入
輸入有多行,每一行的值為硬幣的數目n,1≤n≤2^30,輸入0結束程式
輸出
最少要稱多少次一定能把那個假幣找出來。輸出對應輸入行數.
樣例輸入312
0樣例輸出13
題目的中心思想是如和將乙個用最快速的方法進行分堆,並且能識別出堆與堆之間的不同
鑑於c語言沒有log3所以只能拆分為log(n)/log(3)有兩種分法:
以n=8為例
第一種:二分法8/2=4
4 4 --> 2 2 --> 1 1
第二種:三分法8/3=2 3/3=1
3 3 2 --> 1 1 1 或者 1 1 0
以n=28為例
第一種:二分法28/2=14
14 14 --> 7 7 --> 3 3 --> 1 1
第二種:三分法28/3=9 10/3=3 4/3=1
10 10 8 --> 4 4 2 --> 2 2 0 --> 1 1 0
或 --> 3 3 2 --> 1 1 1 或者 1 1 0
總結:對於n>1 min次數為
對於[x]向下取整 對應函式double floor(double)
對於向上取整 對應函式double ceil(double)
#include
#include
//三分法解決此問題,計算除以3,直到為1為止
intmain()
return0;
}
列舉 假幣問題
有12枚硬幣。其中有11枚真幣和1枚假幣。假幣和真幣重量不同,但不知道假幣比真幣輕還是重。現在,用一架天平稱了這些幣三次,告訴你稱的結果,請你找出假幣並且確定假幣是輕是重 資料保證一定能找出來 輸入 第一行是測試資料組數。每組資料有三行,每行表示一次稱量的結果。銀幣標號為a l。每次稱量的結果用三個...
求解查詢假幣問題
二分 include include include define max 100 int a max int n intsum int low,int high return sum int solve int low,int high if low high 1 int mid low high...
HPU 1042 假幣問題
時間限制 1 sec記憶體限制 128 mb 提交 200解決 34統計 居然有假幣!事情是這樣的,現在豬肉漲了,但是農民的工資卻不見漲啊,沒錢怎麼買豬肉啊。老王這就去買豬肉,結果找來的零錢中有假幣!可惜老王一不小心把它混進了一堆真幣裡面去了。現在知道假幣的重量比真幣的質量要輕。給你乙個天平,請用最...