1497 - N的阶乘
时间限制 : 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)