【发布时间】:2023-03-15 04:42:01
【问题描述】:
所以,我是 C++ 编程的新手,我遇到了这个问题,我需要计算 pow(2,n)/2 where n>64 ?
我尝试使用 unsigned long long int 但由于 c++ 的限制仅为 2^64。那么有什么方法可以计算出来吗?
编辑:
1 < n < 10^5
表达式的结果用于进一步计算
这个问题是在线平台上问的。所以,我不能使用像gmp这样的库来处理大量的数字。
问题
给你一个大小为 N 的数组 A。如果元素 Ai 的值 (Ai) 大于或等于 文。 Ki 是数组 A 中由元素 Ai 组成的子集的总数.
数组的总电荷值定义为数组中存在的所有带电元素的总和 mod (10^9)+7。
你的任务是输出给定数组的总电荷值。
【问题讨论】:
-
你想对结果做什么,打印出来?我很确定一个简单的
std::cout << std::setprecision(1000) << std::pow(2.l,n) << '\n';应该可以工作。 -
如果你想要精确的算术,你应该使用像 gmp 这样的 bignum 库。
-
这个问题肯定还有更多?例如,也许问题要求
pow(2, n) mod p或类似的东西? -
这听起来像是XY problem。如果问题只要求您打印结果,您可能需要实现自己的大整数库或类似的东西。由于您提到您需要在进一步的计算中使用结果,因此可能会操纵您的公式以避免像这样的大量计算。所以请发布完整的问题。
-
这并没有解决问题,但
pow(2,n)/2是pow(2,n-1)。
标签: c++ c++11 unsigned-integer