題目連結
題意:
已知費氏數列:
fib(1) = 1
fib(2) = 2
fib(3) = fib(1) + fib(2) = 3
fib(4) = fib(2) + fib(3) = 5
...
給定數字 N
分解成費氏數列的組成(費氏進制)
如: 17 = 13 + 3 + 1
寫成 100101 (13,8,5,3,2,1)
解法:
注意輸出是由高位元到低位元
先求出範圍內最大的費氏
此處 N 可以到 1 億,大概是 fib(43)
然後從最大的判斷回來
若 fib(i) <= N,就是最高位元的 1
令 N = N - fib(i) 後繼續做
fib(i) <= N 補 1
fib(i) > N要補 0
程式(Java):
題意:
已知費氏數列:
fib(1) = 1
fib(2) = 2
fib(3) = fib(1) + fib(2) = 3
fib(4) = fib(2) + fib(3) = 5
...
給定數字 N
分解成費氏數列的組成(費氏進制)
如: 17 = 13 + 3 + 1
寫成 100101 (13,8,5,3,2,1)
解法:
注意輸出是由高位元到低位元
先求出範圍內最大的費氏
此處 N 可以到 1 億,大概是 fib(43)
然後從最大的判斷回來
若 fib(i) <= N,就是最高位元的 1
令 N = N - fib(i) 後繼續做
fib(i) <= N 補 1
fib(i) > N要補 0
程式(Java):
留言
張貼留言