当n在C 中超过64时,如何计算POW(2,N)
How to calculate pow(2,n) when n exceeds 64 in c++?
所以,我是C 编程的新手,我遇到了这个问题,我需要在其中计算 pow(2,n(/2 其中n> 64?
我尝试使用未签名的长长int,但由于C 的极限仅为2^64。因此,是否有任何方法来计算此方法。
编辑:
1 < n < 10^5
表达式的结果用于进一步的计算
在在线平台上问这个问题。
问题
您用数组 a 的大小 n 给予。如果元素 AI 如果其值( ai (大于或等于 ki 。 ki 是由元素 a ai 组成的数组 a 的子集总数。
数组的总充电值定义为数组 mod(10^9( 7 的所有电荷元素的总和。
您的任务是输出给定数组的总充电值。
这里的一个重要细节是,不要求您计算巨型n的2 n 。相反,您被要求计算2 n mod 10 9 7对于大N,这是一个不同的问题。
例如,让我们假设您要计算2 70 mod 10 9 1.请注意2 70 不适合一个64位机器。但是,2 70 = 2 30 &middot;2 35 和2 35 确实适合64位机器。因此,我们可以执行此计算以获得2 70 mod 10 9 7:
2 70 (mod 10 9 7(
= 2 35 &middot;2 35 (mod 10 9 7(
=(2 35 mod 10 9 7(&middot;(2 35 mod 10 9 7(mod 10 9 7
=(34359738368 mod 10 9 7(&middot;(34359738368 mod 10 9 7(mod 10 9 7
=(359738130&middot; 359738130(mod 10 9 7
= 129411522175896900 mod 10 9 7
= 270016253
更一般地,通过使用重复的平方,您可以计算2 n mod 10 9 7,以n的任何值,以一种非常适合64--位整数。
希望这会有所帮助!
严重数值工作中的常见方法是重写公式的方法。您存储log(x)
而不是x
,然后在您确实需要x
时,通常会在您不需要所有这些数字的上下文中。
- 为什么"do while"循环不断退出,即使条件计算结果为 false?
- 递归函数计算序列中的平方和(并输出过程)
- (C++)分析树以计算返回错误值的简单算术表达式
- 我的字符计数代码计算错误.为什么
- 在计算中使用二的幂有多有利可图
- 如何计算文件中的"columns"数?
- 计算排序向量的向量中唯一值的计数
- 如何使用 std::累积在 C++ 中计算总和立方体
- 使用Qt C++计算类似Git的SHA1哈希
- OpenCV C++.快速计算混淆矩阵
- cpp二进制搜索问题,计算给定数组中输入元素的出现次数
- C++如何计算用户输入的数字中的偶数位数
- 如何计算数据类型的范围,例如int
- 类似枚举的计算常量
- 计算每个节点的树高,帮助我解释这个代码解决方案
- 多个If语句与使用逻辑运算符计算条件的单个语句的比较
- 计算缩放多边形的比例,得到给定的多边形面积
- 在C++中如何在没有pow的情况下进行基础计算
- 允许预先计算和计算的结果
- Matlab 计算与'C/C++'计算..哪一个是有效的?