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