3

200,000 intsのような非常に大きな配列の反転数を計算したいのですが、得られる数はかなり大きいです。非常に大きいため、int値に格納できません。

私が得た答えは-8,353,514,212のようなものですが、単純なケースでは機能するので、問題は、反転の数を格納するために使用する変数のタイプにあると思います。

私も試してみましlong intたが、出力は同じですが、double4.0755e+009で試してみると出力になります。何が問題なのかわかりません。

4

2 に答える 2

3
  1. 符号なしデータ型を使用する
  2. unsigned long(通常 2^32-1) またはunsigned long long(通常 2^64-1)を使用

完全なリファレンスについては、この記事を参照してください。

于 2012-07-07T12:21:02.477 に答える
0

コンパイラのネイティブタイプが計算結果を保持するのに適していない場合は、bignumライブラリの使用を検討できます。

すばやく検索すると、次の2つが明らかになりました。

http://www.ttmath.org/

http://gmplib.org/

どちらも経験はありませんが、SOの周りではgmpの方が人気があるようですので、まずはそれを試してみてください。

于 2012-07-07T12:53:42.307 に答える