我们都知道如何计算一个数的阶乘,可是,如果这个数很大呢,我们该如何去计算它并输出它?
输入
输入一个整数m(0<m<=5000)
输出
输出m的阶乘,并在输出结束之后输入一个换行符
样例输入
50
样例输出
30414093201713378043612608166064768844377641568960512000000000000
java代码:
import java.math.*;
import java.util.*;
public class Main{
public static void main(String[]args) {
Scanner in=new Scanner(System.in);
int m=in.nextInt();
String n=Integer.toString(m);
BigInteger big= new BigInteger(n);
System.out.println(f(big));
}
public static BigInteger f(BigInteger m) {
if(m.equals(BigInteger.ONE)||m.equals(BigInteger.ZERO))
return BigInteger.ONE;
return ( m.multiply(f(m.subtract(BigInteger.ONE))));
}
}
c++代码:
#include<iostream>
using namespace std;
int a[1000001];
int main()
{
int n;
cin>>n;
int len=1;
a[1]=1;
for(int i=2;i<=n;++i)
{int t=0;
for(int j=1;j<=len;++j)
{int temp=a[j]*i+t;
a[j]=temp%10;
t=temp/10;
if(j==len&&t!=0)
len++;
}
}
for(int i=len;i>0;--i)
cout<<a[i];
cout<<endl;
return 0;
}