問題 1187 假幣問題 借鑑 我很菜

2021-10-03 09:42:47 字數 1058 閱讀 6208

時間限制: 1sec 記憶體限制: 128mb

居然有假幣!!!

事情是這樣的,現在豬肉漲了,但是農民的工資卻不見漲啊,沒錢怎麼買豬肉啊。老王這就去買豬肉,結果找來的零錢中有假幣!!!可惜老王一不小心把它混進了一堆真幣裡面去了。現在知道假幣的重量比真幣的質量要輕。給你乙個天平,請用最快的時間把那個可惡的假幣找出來。

輸入

輸入有多行,每一行的值為硬幣的數目n,1≤n≤2^30,輸入0結束程式

輸出

最少要稱多少次一定能把那個假幣找出來。輸出對應輸入行數.

樣例輸入312

0樣例輸出13

題目的中心思想是如和將乙個用最快速的方法進行分堆,並且能識別出堆與堆之間的不同

有兩種分法:

以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次數為

鑑於c語言沒有log3所以只能拆分為log(n)/log(3)

對於[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統計 居然有假幣!事情是這樣的,現在豬肉漲了,但是農民的工資卻不見漲啊,沒錢怎麼買豬肉啊。老王這就去買豬肉,結果找來的零錢中有假幣!可惜老王一不小心把它混進了一堆真幣裡面去了。現在知道假幣的重量比真幣的質量要輕。給你乙個天平,請用最...