1497 - N的阶乘

通过次数

0

提交次数

0

时间限制 : 1 秒 内存限制 : 32 MB

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

题目输入

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

题目输出

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

输入/输出样例

输入格式

0
4
7

输出格式

1
24
5040

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;
}

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;
}

Java解答

import java.math.BigInteger;
import java.util.Scanner;


public class Main {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner scanner = new Scanner(System.in);
		while (scanner.hasNext())
		{
			int n;
			n = scanner.nextInt();
			BigInteger sum = new BigInteger("1");
			for (int i = 1; i <= n; i++)
			{
				sum = sum.multiply(new BigInteger(Integer.toString(i)));
			}
			System.out.println(sum.toString());
		}
	}

}

Python解答

def factorial(n):
  s = 1
  for i in range(n):
    s = s*int(i+1)
  return s

if __name__ == "__main__":
  while True:
    a = int(raw_input())
    print factorial(a)