我想计算一个非常大的数组的反转次数,比如 200,000 个整数,我得到的数字非常大。这么大,它不能存储在一个int
值中。
我得到的答案类似于 -8,353,514,212,而对于简单的情况它可以工作,所以我认为问题在于我用来存储反转次数的变量的类型。
我也试过了long int
,输出是一样的,但是如果我尝试用double
4.0755e+009 是输出。我不知道问题是什么。
我想计算一个非常大的数组的反转次数,比如 200,000 个整数,我得到的数字非常大。这么大,它不能存储在一个int
值中。
我得到的答案类似于 -8,353,514,212,而对于简单的情况它可以工作,所以我认为问题在于我用来存储反转次数的变量的类型。
我也试过了long int
,输出是一样的,但是如果我尝试用double
4.0755e+009 是输出。我不知道问题是什么。
unsigned long
(通常为 2^32-1)或unsigned long long
(通常为 2^64-1)如需完整参考,请参阅本文。
如果编译器的本机类型不适合保存计算结果,您可以考虑使用 bignum 库。
快速搜索发现了这两个:
我也没有经验,但 gmp 似乎是围绕 SO 更受欢迎的选择,所以也许这就是你应该首先尝试的