3

我想计算一个非常大的数组的反转次数,比如 200,000 个整数,我得到的数字非常大。这么大,它不能存储在一个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 库。

快速搜索发现了这两个:

http://www.ttmath.org/

http://gmplib.org/

我也没有经验,但 gmp 似乎是围绕 SO 更受欢迎的选择,所以也许这就是你应该首先尝试的

于 2012-07-07T12:53:42.307 回答