我正在编写一个组合计算器,对于更大的计算,我最终会遇到long long int
或int64_t
的溢出。或许,至少可以将数字转换为这种类型:6.7090373691429E + 19?
这是我的代码:
#include <iostream>
#include <string.h>
#include <math.h>
int main() {
std::string charset;
int i, length; int64_t total = 0;
std::cout << "Charset: ";
std::cin >> charset;
std::cout << "Length: ";
std::cin >> length;
for (i=0;i<(length+1);i++) {
total += pow(charset.size(),i);
}
std::cout << "\nPossible combinations: " << total << std::endl;
return 0;
}
答案 0 :(得分:5)
C ++标准库不包含任意大小的整数类型。
您可以使用Boost Multiprecision。它有不同的后端,使用专用库(例如GMP)和没有外部依赖的自定义后端(cpp_int)。
编辑:公平地说,vsoftco在评论中已经提到了Boost Multiprecision。