最少砝碼稱量1到100重量問題

2021-09-09 08:28:39 字數 983 閱讀 5342

問題:需要使用砝碼測量1,2,3,4......,99,100所有重量的物品,最少需要多少個砝碼?

最直觀的感受是直接使用1,2,4,8......,64 。也就是2^0,2^1,2^2......2^6,一共7個砝碼,因為任何數字都可以表示成二進位制數,比如100用二進位制表示就是:1100100,所以使用2^2,2^5,2^6三個砝碼即可。任何數字都可以表示為二進位制數,在這裡就意味著任何重量都可以用上述2^n砝碼表示。

但這是最少數量的砝碼嗎?

這要視情況而定,如果只能在天平的一邊放砝碼,另一邊放物品,這就是最少的方案。因為對於砝碼而言只有兩種狀態:不放,對於n個砝碼,可能出現的總體狀態有2^n種狀態,要表示100個資料則要保證2^n>=100,得最小的n=7,意思就是說不管什麼砝碼方案,至少都要7個砝碼。而前面我們猜想的方案正好是7個砝碼,正好是理論推導出的最少砝碼個數,不會比這個數目更少了,所以是乙個最少的方案。

如果允許天平兩邊都放砝碼,也就是說物品可以和砝碼放在一邊,上述2^n砝碼方案就不是最少的方案了。因為砝碼有三種狀態:不放放左邊放右邊。對於n個砝碼,可能出現的總體狀態有3^n種狀態,要表示100個資料則要保證3^n>=100,的最小的n=5,意思就是說不管什麼砝碼方案,至少都要5個砝碼。接下來我們嘗試一下能不能找到5個砝碼的方案。

任意乙個數都可以表示成三進製的數,比如100用三進製表示就是10201,通過減法,我們又可以把任意乙個三進製數化成只有0和1的形式,比如將10201化成10201=11001-100。而且減數與被減數相同位上的數字必然不會同時為1,假如化成減法形式後相同位同時為1,比如110-10,兩個數的十位上都為1,結果必然是100,沒有2,所以不用化簡,矛盾。綜上,3^0,3^1,3^2......3^4一共5個砝碼一定可以表示出從1到3^0+3^1+3^2+...+3^4=121的所有數(注:不是3^5-1)

1到100的序數詞

第1 first 第2 second 第3 third 第4 fourth 第5 fifth 第6 sixth 第7 seventh 第8 eighth 第9 ninth 第10 tenth 第11 eleventh 第12 twelfth 第13 thirteenth 第14 fourteenth...

PL SQL實現1到100素數判斷

其實pl sql中的迴圈和分支結構的 實現邏輯與其他的程式語言是差不多的,學會了其中的乙個就能夠很容易上手另外乙個 pl sql有四個組成部分,declare begin exception end 注意有分號 然後比較簡單的乙個例項,1 100素數判斷,並輸出所有的素數 declare ret n...

Shell編寫,1到100的和。

在編譯器中開啟 如上圖。步驟 開啟虛擬機器的終端,輸入vim hello.sh hello你的檔名,隨意起 然後回車。摁i進入標記模式,將 複製進去,或者敲進去。摁esc,輸入 wq!回車。輸入chmod x hello.sh 你需要給你的檔案許可權,hello檔名,和你上面一樣。執行指令碼。輸入....