フィボナッチシーケンスは、0と1で始まり、最後の2つの数字を加えて次の数字を得ることによって得られます。整数をフィボナッチに効率的にコーディングするには?
すべての正の整数は、繰り返しなしのフィボナッチ数の集合の和として表すことができます。たとえば、13は{13}、{5,8}または{2,3,8}の集合の合計になります。しかし、われわれが見てきたように、いくつかの数値は、合計が数値である複数の集合を持っています。セットに2つの連続するフィボナッチ数を持たせることができないという制約を追加すると、各数値に対してユニークな表現ができます。
バイナリシーケンス(ちょうど0と1)を使用します。たとえば、17 = 1 + 3 + 13です。次に、17 = 100101です。詳細は図2を参照してください。
私はこの表現にいくつかの整数をオンにしたいのですが、整数は非常に大きいかもしれません。どのようにこれを効率的に行うか。
https://en.wikipedia.org/wiki/Fibonacci_codingは、欲張りのアプローチがうまくいくことを示唆しています。 – Thomas
非常に大きな意味は?彼らは64ビットに収まるのでしょうか? –
フィボナッチが100未満で64ビットに収まります。したがって、整数が64ビットに制限されている場合は、必要なすべてのフィックス・ナンバーの表をハードコードするだけです。リストを参照するか、自分で一度計算してください。 http://www.maths.surrey.ac.uk/hosted-sites/R.Knott/Fibonacci/fibtable.html – MrSmith42