首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在c++中处理大数据元素?

如何在c++中处理大数据元素?
EN

Stack Overflow用户
提问于 2012-08-20 16:54:32
回答 3查看 270关注 0票数 0

我想把pow(2.0,(n-8))的返回值除以86399。问题出在10 <= n <= 100000000上。

我怎么处理这么大的返回值呢?

我使用的是Ubuntu11.10 64位,使用C++ 4.0.0-8

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-08-20 17:07:11

这个讨论应该会回答你的问题Modular Exponentiation for high numbers in C++

对于这么大的数字,你必须做一些聪明的事情。在没有bigint库的情况下,你不可能以任何合理的方式天真地表示这个完整的数字,即使这样,它也太大了,不能使用暴力。这个数字本身就会占用几十兆字节。

票数 0
EN

Stack Overflow用户

发布于 2012-08-20 16:59:17

除非你使用一个大数字库,否则你不能。64位不能容纳这么大的数字。即使到那时,这也可能需要一段时间。2^(86392)大约有26000位数字。

如果你只想得到一个模数,有一些很好的算法。参见http://en.wikipedia.org/wiki/Modular_exponentiation

如果您还想尝试bignums,请查看http://gmplib.org/

票数 4
EN

Stack Overflow用户

发布于 2012-08-20 16:59:35

一种非常简单的方法是使用GMP -- http://gmplib.org/

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12034747

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档