ディスクを使用せずに、数値の非常に大きな部分 (C/C++ で最大の整数型の最大値、たとえば 2^20 を超える) でサイクル長を見つける可能性はありますか? 最良の状況は、標準入力から到着したときにそれらを順次分析することですが、それは不可能であり、メモリに保存する必要があると確信しています。しかし、私が間違っていることを願っています。数値は整数で、標準入力から取得されます。
例: 入力: ( 1 2 3 ... (1 2 3 の 2^20 トリプル) ... 1 2 3) 望ましい結果: 3
編集
サイクルを周期と考えてみましょう (f(x) = f(x+t) for some t) - t の値を探します
オペレーティング メモリが少なすぎてすべての数値を格納できず (数値は 2^20 を超える可能性があります)、gmp 型である可能性があると仮定しましょう。