バックグラウンド
あなたのほとんどはフィボナッチ数が何であるか知っています。ツェッケンドルフの定理によれば、正の整数はすべて、1つ以上の異なるフィボナッチ数の合計として表現できることを知っている人もいるかもしれません。整数の最適なツェッケンドルフ表現の項の数n
自体がフィボナッチ数である場合、n
「密かに」フィボナッチと呼びます。
例えば:
139 = 89 + 34 + 13 + 3
This is a total of 4 integers. Since 4 is not a Fibonacci number, 139 is not secretly Fibonacci
140 = 89 + 34 + 13 + 3 + 1
This is a total of 5 integers. Since 5 is a Fibonacci number, 140 is secretly Fibonacci
ノート
- 最適なZeckendorf表現は、貪欲なアルゴリズムを使用して見つけることができます。最大のフィボナッチ数<= nを取得し、0に達するまでnから減算します。
- すべてのフィボナッチ数は、1つのフィボナッチ数(それ自体)の合計として表すことができます。1はフィボナッチ数であるため、すべてのフィボナッチ数も密かにフィボナッチ数です。
チャレンジ
あなたの課題は、整数を受け取り、その整数が密かにフィボナッチであるかどうかを返すプログラムまたは関数を書くことです。
入力
妥当な形式で入力できます。入力は単一の正の整数であると仮定できます。
出力
入力が密かにフィボナッチであるかどうかについて、2つの異なる結果の1つを出力します。例には、True
/ False
、1
/ 0
などが含まれます。
得点
これはcode-golfなので、バイト単位の最短回答が勝ちです!標準的な抜け穴は禁止されています。
テストケース
Truthy (secretly Fibonacci)
1
2
4
50
140
300099
Falsey (NOT secretly Fibonacci)
33
53
54
139
118808