有假幣 找規律

2021-10-03 09:51:01 字數 1040 閱讀 4310

3 參考**

有假幣時間限制 1000 ms 記憶體限制 32768 kb **長度限制 100 kb 判斷程式 standard (來自 小小)

題目描述

居然有假幣! 現在豬肉漲了,但是農民的工資卻不見漲啊,沒錢怎麼買豬肉啊。nowcoder這就去買豬肉,結果找來的零錢中有假幣!!!可惜nowcoder一不小心把它混進了一堆真幣裡面去了。只知道假幣的重量比真幣的質量要輕,給你乙個天平(天平兩端能容納無限個硬幣),請用最快的時間把那個可惡的假幣找出來。

輸入描述:

1≤n≤2^30,輸入0結束程式。

輸出描述:

最多要稱幾次一定能把那個假幣找出來?

輸入例子:312

0輸出例子:13

見題分3份比2份的找到硬幣所需次數少。

因為對於要稱量的硬幣,每次稱量前分成3份,要求前兩份的個數不小於第三份。如果前兩份重量是一樣,那麼假幣在第三份中,這樣就除去了2/3的硬幣。

如果前兩份重量不一樣,那麼假幣在重量輕的乙份中,這樣也除去了2/3的硬幣。

這樣以來,稱量一次除去了將近2/3的硬幣,一直重複上面的分法,就可以很快求出稱量次數。

例如:對於 1個硬幣,稱量 0次

對於 2個硬幣,稱量 1次

對於 3個硬幣,稱量 1次

對於 4個硬幣,稱量 2次,先分成(2,2,0),第一次稱量前兩份(2,2),如果重量不一樣,再次求出判斷另外2個硬幣需要稱量的次數。

對於 5個硬幣,稱量 2次,先分成(2,2,1),第一次稱量前兩份(2,2),如果重量不一樣,再次判斷另外1個硬幣需要稱量的次數。

對於 6個硬幣,稱量 2次,先分成(2,2,2),第一次稱量前兩份(2,2),如果重量不一樣,再次判斷求出另外2個硬幣需要稱量的次數。

對於 7個硬幣,稱量 2次,先分成(3,3,1),第一次稱量前兩份(3,3),如果重量不一樣,再次判斷求出另外3個硬幣需要稱量的次數。

。。。一直到10個硬幣,才稱量三次。。。

#include

#include

intmain()

}

牛客 有假幣

居然有假幣!現在豬肉漲了,但是農民的工資卻不見漲啊,沒錢怎麼買豬肉啊。nowcoder這就去買豬肉,結果找來的零錢中有假幣!可惜nowcoder 一不小心把它混進了一堆真幣裡面去了。只知道假幣的重量比真幣的質量要輕,給你乙個天平 天平兩端能容納無限個硬幣 請用最快的時間把那個可惡的假幣找出來。輸入描...

10 (未經評測)有假幣

有假幣 time limit 1000 ms memory limit 65536 kb description 居然有假幣!事情是這樣的,現在豬肉漲了,但是農民的工資卻不見漲啊,沒錢怎麼買豬肉啊。淵子這就去買豬肉,結果找來的零錢中有假幣!可惜淵子一不小心把它混進了一堆真幣裡面去了。現在知道假幣的重...

PAT 有假幣 遞推 難度2 詳細題解

看著就像遞推,但這題的遞推並不能用陣列來表示,因為會越界 遞推的三種寫法 1.陣列 2.滾動陣列 3.遞迴 遞推的一般思路 1.列舉幾組數 2.找題中的內在聯絡.這題還是比較複雜的乙個遞推題目,首先仔細理解題意,可以想到每次把錢分成三組應該是最優的一種策略 因為無論當前比較的兩組是平還是不平,都可以...