大数字的m的N次幂
Nth power of m for big numbers
输入文件中将有两个数字,它们在1≤n之间,m<100我应该显示m到n的幂。当我使用pow(x,y)函数时,它不能计算ex::12到23的大整数,通常应该显示6624737266949237011120128,但我的代码显示负数。有人能解决这个问题吗?
如果不使用外部库,这不是很难做到的。将数字的位数存储在一个向量中,然后逐位数相乘(就像在纸上一样)。
Example:
power(12,23):
Store as start->1->2->end
step 1 result: start->1->4->4->end
step 2 result: start->1->7->2->8->end
and so on...
你能展示你的源代码吗?使用double就足以存储结果下面是我的测试代码供您参考:
#include <iostream>
#include <cmath>
using namespace std;
int main (int argc, char *argv[])
{
double result = pow (12, 23);
cout.precision (26);
cout << "Result: " << result << endl;
}
在调用pow:之前,尝试将您的基地存储在long double
中
long double base = 12;
long double result = pow(base, 23);
这是不需要的,因为C++11虽然,你可以得到一个很好的近似如下:
#include <iomanip>
#include <iostream>
#include <cmath>
int main ()
{
std::cout << std::fixed << std::setprecision(0) << pow(99, 99) << std::endl;
}
输出:
369729637649726802192985226395427290145296428445515959701359650120802601667133273280053721002700400354392780458116125965728631706472588849812738072765460822138161108630185181415759762204338929270784
但这是一个近似,例如Python2
代码print 99 ** 99
输出的是:
369729637649726772657187905628805440595668764281741102430259972423552570455277523421410650010128232727940978889548326540119429996769494359451621570193644014418071060667659301384999779999159200499899
要在C++中获得确切的结果,您应该查看一些BigInt库。
- C++问题:用户认为数字1-100,程序提出问题不超过6次即可得到答案。无法正确
- C++ 检查结果数组中有多少次数字
- 查找数字是否为 2 的幂的时间复杂度
- 如何在不使用乘除运算符的情况下计算 A 的 B 次幂?
- 如何计算整数链中使用了多少次数字?
- 数字后面的最高幂为 2
- C++:创建1000次唯一的随机分布,在任何分布中都没有重复的数字
- C++ 中 pow 方法的 5 次幂错误
- 连续两次写入数字时出现逻辑错误 (C++)
- 快速获取接近2次幂的数字(浮点)
- 在 Vulkan 中加载非二次幂纹理
- 2 升至 N 次幂,无需任何循环或递归或库函数
- GLSL 1.2+纹理非二次幂
- 有没有办法让一个函数在第二次出现数字时做一些不同的事情
- 取浮点数最接近的整数次幂
- Ruby程序:在一个数字的阶乘的n次幂后面加零
- 使用位运算符查找在数组中只出现一次的数字
- 在c++中有没有更快的方法来检验一个数是否是2的整数次幂?
- 在取小数的整数次幂时保持精度
- 大数字的m的N次幂