切換
舊版
前往
大廳
主題

ZeroJudge - d704 Fibonacci 進制轉換 解題心得

Not In My Back Yard | 2018-07-27 14:49:48 | 巴幣 0 | 人氣 183

(2023 / 1 / 29 更新文章格式與敘述)
題目連結:


題目大意:
每列給定一個十進位制正整數 n(0 < n ≤ 2 ^ 31 - 1),將其轉成 Fibonacci 進位制後輸出。

Fibonacci 進位制代表著最低位為2進位制,下一位是3進位制,再下一位是5進位制,以此類推。



範例輸入:
1
10
315
1000


範例輸出:
1
1,2,0
1,2,2,1,1
4,1,1,2,0


解題思維:
其實不管什麼進位制,原理都大致相同。

以 87 寫成二進位制來說,就是先把 87 除以 2,得到商數 43 和餘數 1,而餘數便是二進位制最低位(XXXXXX1);再將得到的 43 再除以 2 得到新商數 21 和新餘數 1,而餘數便是第二低位(XXXXX11);重複幾次後便得到了 1010111,就是我們要的 87 的二進位表示法。

同理,87 寫成 Fibonacci 進位,也是將 87 除以 2,得 43 餘 1;接著 43 除以 3 (不是 2 喔),得 14 餘 1;再將 14 除以 5,得 2 餘 4;2 除以 8,得 0 餘 2 。於是,我們便得到了結果:2, 4, 1, 1。

這樣子就達成了我們的目標了。




此次分享到此為止,如有任何更加簡潔的想法或是有說明不清楚之地方,也煩請各位大大們可以提出來討論。

創作回應

相關創作

更多創作