游客 Signup | Login
中文 | En

1497 - N的阶乘

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

Input

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

Output

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

Examples

Input

0
4
7

Output

1
24
5040

Solution C

#include <stdio.h>
int main()
{
    int a[2570],c,i,j,m,n;
    while(scanf("%d",&n)!=EOF)
    {
        a[0]=1;
        m=0;
        for(i=1;i<=n;i++){
            c=0;
            for(j=0;j<=m;j++)
            {
                a[j]=a[j]*i+c;
                c=a[j]/10;
                a[j]%=10;
            }
            while(c)
            {
                m++;
                a[m]=c;
                c=a[m]/10;
                a[m]%=10;
            }
        }
        for(i=m;i>=0;i--)
            printf("%d",a[i]);
		printf("\n");
    }
       return 0;
}

Solution C++

#include <stdio.h>
int a[1111111],n; 
void run()
{
	int i,m,j,t=0;
	a[0]=1;
	for(i=1;i<=n;i++)
	{
		for(j=0;j<=t;j++)
			a[j]*=i;
		for(j=0;j<t;j++)
		{
			a[j+1]+=a[j]/10;
			a[j]%=10;
		}
		while(a[t]>9)
		{
			a[t+1]=a[t]/10;
			a[t]%=10;
			t++;
		}
	}
	for(i=t;i>=0;i--)
		printf("%d",a[i]);
	printf("\n");
}
int main()
{
	scanf("%d",&n);
	while(n!=-1)
	{
		run();
		n=-1;
		scanf("%d",&n);
	}
	return 0;
}
Time Limit 1 second
Memory Limit 32 MB
Discuss Stats
上一题 下一题