在C中解决2到20万的功率

JMB*_*ise 1 c math

我怎么解决:2 ^ 200'000在C中
我尝试了几个解决方案:

unsigned long long int variable = 1;
int i = 0;
 for(i = 0; i < 200000; i++) {
        variable *= 2;
 }
 printf("%llu", variable);
Run Code Online (Sandbox Code Playgroud)

我得到了结果:0

我也累了:

variable = 1 << 200000;
Run Code Online (Sandbox Code Playgroud)

我得到了同样的结果

而且:

pow(2, 200000);
Run Code Online (Sandbox Code Playgroud)

我得到了结果: inf

我知道结果将是一个非常大的数字!

Bas*_*tch 6

你需要使用bignums.提供它们的好C库是GMPlib(或Gmp).

另见这个这个答案.

如果它是一个家庭作业而你必须避免使用外部库,那么通过将大数字表示为例如100d0000的基数作为bigdigits的向量(在基数1000000000中,即unsigned int-s小于1000000000),实现你自己的天真和低效的bignum操作.但请注意,有效的bignum操作算法是一个非常难的主题(你可以在其上做博士).

使用Common Lisp(实际上是Linux上的SBCL),(expt 2 200000)给出了很多数字,以