阶乘

// 阶乘
#include<iostream>
const int maxn = 3000;
int fac[maxn],len;
void fact(int n){
	int i,j;
	memset(fac,0,sizeof(fac));
	fac[0]=1;
	for(i=2;i<=n;i++){
		int ten=0;
		for(j=0;j<maxn;j++){
			int one=fac[j]*i+ten;
			fac[j]=one%10;
			ten=one/10;
		}
	}
	for(j=maxn-1;j>=0;j--) if(fac[j]) break;
	len=j+1;
}

void wofa(int n){
	int i;
	fact(n);
	for(i=len-1;i>=0;i--) printf("%d",fac[i]);
	printf("\n");
}

int main() {
	int n;
	scanf_s("%d", &n);
	wofa(n);
	system("pause");
	return 0;
}

  

posted on 2013-08-13 21:27  Amyc  阅读(140)  评论(0编辑  收藏  举报