3

Java でN^Nを効率的に計算する方法を見つけようとしています。N が大きいと結果が非常に大きくなるため、結果のデータ型として BigInteger を使用し、N は整数です。N が大きくなると、たとえばN=10000000になり、結果の計算に時間がかかります。1秒以内にそれを計算する効率的な方法はありますか?

4

1 に答える 1

8

あなたのプログラムで、番号のログを処理しますN ln(N)。が大きくなるにつれて、相対的なNのサイズはますます速く縮小します。N ln(N)N^N

これを実装する方法は、何をする必要があるかによって異なります。プログラムの内部が必要ない場合はN^N、それを忘れて、プログラムが出力されたら紙に書いてください。それほど大きな数値を処理する場合、その対数/大きさの順序/桁数 (これらはすべて同義語です) が最も重要な情報です。あなたのプログラムが を出力する場合x、答えは のあたりであると報告するでしょうe^x

N^Nプログラム内で必要な場合でも、 を計算する必要がありますx = ln(N^N) = N ln(N)xしかし、プログラムが実際に使用できる値に変換するための創造的な方法を考え出す必要があります。

于 2013-05-14T20:29:49.473 に答える