大数阶乘

  描述
我们都知道如何计算一个数的阶乘,可是,如果这个数很大呢,我们该如何去计算它并输出它?
输入
输入一个整数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;
}        


你可能感兴趣的:(大数阶乘)