pow(2.0,(n-8))
の戻り値を86399で割りたいのですが、問題は10 <= n <= 100000000
です。
このような大きな戻り値をどのように処理できますか?
私はUbuntu 11.10 64ビットで、C++ 4.0.0-8を使用しています
大きな数のライブラリを使用しない限り、できません。64 ビットでは、それほど大きな数値を保持できません。それでも、おそらくしばらく時間がかかります。2^(86392) には約 26000 桁あります。
モジュラスだけを取得したい場合は、そのための優れたアルゴリズムがいくつかあります。http://en.wikipedia.org/wiki/Modular_exponentiationを参照してください。
それでも bignum を試してみたい場合は、http://gmplib.org/ をチェックしてください。
非常に簡単な方法の 1 つは、GMP を使用することです -- http://gmplib.org/
このディスカッションは、あなたの質問に答えるはずです C++ での大きな数に対する剰余指数
それほど大きな数の場合は、巧妙なことをしなければなりません。bigint ライブラリがなければ、合理的な方法で単純にその完全な数を表現する方法はありません。数自体は数十メガバイトを占めます。