C++中的大型指数

Ali*_*eza 2 c++ largenumber exponentiation

在C++中,我如何计算像2009 ^ 1389这样的东西?(那是2009年提升到1389的权力,而不是按位异或.)

Gar*_*han 8

简单回答:你做不到.这就是:2009 ^ 1389是得大一些,以适应任何在C(严格来说,它是提供给您的数字类型的可能的,你可能有百万位整数或浮点数或东西,因为C语言标准是故意这些东西相当无限,但实际上你没有.)

如果你真正需要的是精确的整数值,那么出于一些数论的目的:你需要的是一个包含在非常大的整数上进行算术的东西的库.我推荐GMP(http://gmplib.org).这样的库将定义用于表示大整数的数据结构,以及用于对其进行操作的函数.阅读文档!

如果您真正需要的是近似值:也许您可以使用您关心的所有数字的对数,在这种情况下#include <math.h>使用log(a ^ b)= b log a的事实.

(前者似乎更可能是"acm"标签.)

  • @Vlad:哎呀,你是对的.如果我只想写一些东西,比如说,"你需要的是一个包含在非常大的整数上进行算术的东西的库.我推荐GMP".......哦,等等,我做到了. (2认同)