高精度阶乘
传入参数约定:传入参数为int型,返回值为string类型
算法思想:高精度乘单精度的简单运用。
算法复杂度:o(n^2).
#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
const int L=100005;
int a[L];
string fac(int n)
{
string ans;
if(n==0) return "1";
fill(a,a+L,0);
int s=0,m=n;
while(m) a[++s]=m%10,m/=10;
for(int i=n-1;i>=2;i--)
{
int w=0;
for(int j=1;j<=s;j++) a[j]=a[j]*i+w,w=a[j]/10,a[j]=a[j]%10;
while(w) a[++s]=w%10,w/=10;
}
while(!a[s]) s--;
while(s>=1) ans+=a[s--]+'0';
return ans;
}
int main()
{
int n;
while(cin>>n) cout<<fac(n)<<endl;
return 0;
}
本文介绍了一种使用C++实现的高精度阶乘计算方法,适用于处理大整数阶乘运算,采用高精度乘单精度的算法思想,复杂度为O(n^2),通过实例演示了如何输入整数并输出其阶乘的字符串形式。
3311

被折叠的 条评论
为什么被折叠?



