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