N的阶乘:高精度

N的阶乘

题目描述

 输入一个正整数N,输出N的阶乘。

输入描述:

正整数N(0<=N<=1000)

输出描述:

 输入可能包括多组数据,对于每一组输入数据,输出N的阶乘
示例1

输入

4
5
15

输出

24
120
1307674368000
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<string.h>
#include<string>
using namespace std;
int a[1000010];

int main(){
	int n;
	while(scanf("%d",&n)!=EOF){
		memset(a,0,sizeof(a));
		a[0]=1;
		for(int i=2;i<=n;i++){				//i从2累乘到n 
			int s,c=0;						//c代表进位 
			for(int j=0;j<3000;j++){		//3000是长度, 
				s=a[j]*i+c;					//s 暂存为i乘结果的某一位 
				a[j]=s%10;					 
				c=s/10;						//判断要进多少位 
			}
		}
		int ans=0;
		for(int i=3000;i>=0;i--){
			if(a[i]==0&&ans==0)continue;	//不输出前缀0 
			else{
			ans=1;
			printf("%d",a[i]);
			}
		}
		printf("\n");
	}
	return 0;
}

猜你喜欢

转载自www.cnblogs.com/52dxer/p/10539587.html