#44327: 無遞迴python


toitp (Toitp)

學校 : 不指定學校
編號 : 150438
來源 : [203.71.117.4]
最後登入時間 :
2025-03-25 14:14:00
a134. 00948 - Fibonaccimal Base -- UVa948 | From: [101.8.26.45] | 發表日期 : 2024-11-26 13:53

先上code:

```
# 948 Fibonaccimal Base
a = [1, 2] #建立數列的列表
while a[-1] < 100000000:
    a.append(a[-1] + a[-2])

N = int(input())
for case in range(N):
    num = int(input())
    print(f"{num} = ", end='')
    
    found = 0 # 設定起始點
    for f in a[::-1]: #將序列反轉過來
        if num >= f: #當num>序列裡面的數字時,即為最靠近num的費伯那契數
            num -= f
            found = 1
            print(1, end='')
        elif found: print(0, end='')
    print(" (fib)")

```

要點:
1.  先建好費伯那契數列的列表
2. 將整個陣列反轉過來,從最靠近輸出的部分開始一定對--原因很簡單,因為你找到的那個一定等於後兩個之和,又題目要求不能有連續的費伯那契數,那就直接取最近的就好
3. 將輸入的數字扣掉那個數,如果可以扣,print(1),之後,如果不能扣除,記得print(0)

 
ZeroJudge Forum