如何解决如何在 C++ 中找到 100 的阶乘?
我正在编写一个程序来计算 100 的阶乘。代码如下。尽管如此,由于答案太大,输出为 0。是否有任何答案可以显示确切答案?这是因为即使是 unsigned long long 也无法显示 100 的阶乘。谢谢。
#include <iostream>
using namespace std;
int main()
{
int n,i,fact=1;
cout << "enter the number "<<endl;
cin>>n;
for(i=1;i<=n;i++)
{
fact=fact*i;
}
cout<<"the factorial is "<<fact<<endl;
}
解决方法
这是一个相当简单的任务。我们可以像在一张纸上那样做。我们使用 rect
的数字来保存数字。因为结果对于 22! 的 std::vector
来说已经太大了。
答案将是准确的。
采用这种方法,计算很简单。我什至不知道要进一步解释什么。
请看代码:
unsigned long long
使用 Microsoft Visual Studio Community 2019 版本 16.8.2 进行开发和测试。
另外用clang11.0和gcc10.2编译和测试
语言:C++17
,您可以使用 C++ Boost 库来处理如此大的数字。
代码如下:
#include <bits/stdc++.h>
#include <boost/multiprecision/cpp_int.hpp>
using namespace std;
using namespace boost::multiprecision;
cpp_int fact(int);
int main(){
cpp_int a=1;
int n;
cin>>n;
cout<<fact(n)<<endl;
}
cpp_int fact(int x){
if(x==1)
return 1;
cpp_int temp=1;
temp= x*fact(x-1);
return temp;
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。