a134. 00948 - Fibonaccimal Base
標籤 : 費氏數列 進制轉換
通過比率 : 1877人/1953人 ( 96% ) [非即時]
評分方式:
Tolerant

最近更新 : 2015-08-28 14:17

內容

有名的費氏數列是以 0 和 1 開始,然後把最後的兩個數字相加以得到下一項。例如數列的第三項為 1 (1=1+0),第四項為 2 (2=1+1),第五項為 3 (3=2+1),等等。
 

i0123456789
Fib(i)0112358132134
圖 1 - 費氏數列的前幾項

這個數列很重要且出現在我們生活及大自然的許多事物上。其中,你知道所有的正整數都可以用費氏數列中的不重覆的數字集合的和來代表嗎?例如:13 可以是集合 {13}, {5,8} 或{2,3,8} 的和,而 17 則可用 {1,3,13} 或 {1,3,5,8}來表示。即然每個數都有這個特性 (你要自己證證看嗎?) 這個數列可以用作表示數字的「底」。但如前所示,有些數字有多種表示法,這該怎麼辦呢?簡單,因為費氏數列中任兩個連續項的和就是下一項,所以只要加上一個限制:不得使用連續的項,那麼每個數字都有一個唯一的表示法。

有了這個認知後我們可以建立一個很酷的方式來表示任意正整數。我們一連串的 0 與 1來表示。例如:17 = 1 + 3 + 13 (記住不可以使用費氏數列中連續的項),以 0 來表示沒有用到的項,以 1 來表示有用到的項,由右至左排列。因此 17 = 100101. 詳情參閱圖 2。在這個表示法中,最左邊的那一位數一定是 1,不可以是 0。根據我們的限制,這種表示法中不可以出現相鄰的 1。我們這種表示法為「費氏進位」並以下列方式表示  17 = 100101 (fib). 
 

17 =100101
13+3+1 =1385321
圖 2 - 17 的費氏進位表示法之說明

問題

給你一組十進位的數字,你的任務是將它們以費氏進位輸出。

 

輸入說明

輸入的第一行含有一個數字 N,代表以下有幾個數字 ( 1 ≤ N ≤ 500)。

接下來有 N 行,每行有一個小於 100 000 000 的正整數。數字不一定按順序出現。

輸出說明

對於 N 個整數中的每一個整數要用下列格式輸出一行,"DEC_BASE = FIB_BASE (fib)"。DEC_BASE 原始的十進位數字而 FIB_BASE 則是它的費氏進位表示法。詳情參閱範例輸出。

範例輸入 #1
10
1
2
3
4
5
6
7
8
9
10
範例輸出 #1
1 = 1 (fib)
2 = 10 (fib)
3 = 100 (fib)
4 = 101 (fib)
5 = 1000 (fib)
6 = 1001 (fib)
7 = 1010 (fib)
8 = 10000 (fib)
9 = 10001 (fib)
10 = 10010 (fib)
測資資訊:
記憶體限制: 512 MB
提示 :
標籤:
費氏數列 進制轉換
出處:
UVa948 [管理者: snail (蝸牛) ]

本題狀況 本題討論 排行

編號 身分 題目 主題 人氣 發表日期
39247 n12603579tab ... (施智皓) a134
1098 2024-01-27 14:36
40701 john1100729@ ... (靖諺) a134
C++ 詳解
507 2024-06-06 20:53
29569 tommy1232343 ... (星雨) a134
2675 2022-03-12 17:07
13982 yungshenglu1 ... (David Lu) a134
Fibonaccimal Base
4855 2018-05-24 18:16