数学 —— 巧用进制
例題 天平稱重:變種三進制
用天平稱重時,我們希望用盡可能少的砝碼組合稱出盡可能多的重量。
如果有無限個砝碼,重量分別是1,3,9,27,81,……等3的指數冪,
神奇之處在于用它們可以稱出任意整數重量(砝碼允許放在左右兩個盤中)。
本題目要求編程實現:對用戶給定的重量,給出砝碼組合方案。
用戶輸入:
5
程序輸出:
9-3-1
用戶輸入:
19
程序輸出:
27-9+1
要求程序輸出的組合總是大數在前小數在后。
可以假設用戶的輸入的數字符合范圍1~121。
思路
1, 3, 9, 27, 81,……
30,31,32,33,34,……
聯想到用3進制解決問題。
假設是二進制:
1,2,4,8,……
假設要稱重量為10的物品,10轉換為二進制是1010,代表取2和8兩個砝碼就能稱出10,11轉換為二進制是1011,代表取1、2和8三個砝碼就能稱出11,……
如果把5轉換為3進制為12,1代表要取一個重量為3的砝碼,2代表要取兩個重量為1的砝碼,但是題目中并沒有說可以用多個砝碼。
如果把5轉換為變種3進制可以表示為(2,-1)3=(1,-1,-1)3,這樣就能夠表示為題目中給出的9-3-1。
二進制代表了兩種狀態,取或不取,但是三進制代表了三種狀態,放在左盤、不取、放在右盤。
對于要稱重的數,先轉換為3進制 ,然后翻轉(放置越界),之后轉成字符數組,掃描;如果遇到2就將其自己變成-1,下一位+1;如果遇到22的情況就將2變成-1,下一位變成0,后面一位+1;最后,恢復成10進制。
總結
以上是生活随笔為你收集整理的数学 —— 巧用进制的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Virtual Judge —— Nim
- 下一篇: Dictionary Aizu - AL