我发现long long int的数值限制不足。 C ++中还有其他数字类型,比如java中的大整数吗?
我最近偶然发现了这个问题,并且不知道如何解决这个问题..... https://blog.codechef.com/2009/07/02/tutorial-for-small-factorials/
答案 0 :(得分:11)
unsigned long long int是标准C ++中的最大整数类型 (它可以保存0到18的数字446 744 073 709 551 615), 如果你想要更大的那些,你可能需要搜索一些像这样的bignum库: http://www.ttmath.org/
答案 1 :(得分:5)
答案 2 :(得分:3)
您可以使用C ++库<boost/multiprecision/cpp_int.hpp>
解决此类问题。
例如:
#include <boost/multiprecision/cpp_int.hpp>
#include <iostream>
namespace mp = boost::multiprecision;
using namespace std;
int main()
{
mp::cpp_int f = 1;
for(int i = 1; i <= 100; i++)
f *= i;
cout << "100! = " << f << '\n';
}
这将提供输出
100! = 93326215443944152681699238856266700490715968264381621468592963895217599993229915608941463976156518286253697920827223758251185210916864000000000000000000000000