N!
Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Others)
Total Submission(s): 66786 Accepted Submission(s):
19147
Problem Description
Given an integer N(0 ≤ N ≤ 10000), your task is to
calculate N!
Input
One N in one line, process to the end of
file.
Output
For each N, output N! in one line.
Sample Input
1
2
3
Sample Output
1
2
6
Author
JGShining(极光炫影)
Recommend
基础的大数问题,注意进位,将数字全部压入数组保存。
题意:求n!,必须大数。
附上代码:
1 #include <cstdio> 2 #include <iostream> 3 using namespace std; 4 int main() 5 { 6 int i,j,n,k,s,m,t; 7 int a[100005]; //保存n! 8 while(~scanf("%d",&n)) 9 { 10 a[0]=1; 11 s=1; //记录数组的位数 12 for(i=1; i<=n; i++) 13 { 14 k=0; //记录进位的值 15 for(j=0; j<s; j++) //每一位都要乘以i 16 { 17 t=a[j]*i+k; 18 a[j]=t%10; //只保留个位数 19 k=t/10; //去掉最后一位 20 } 21 while(k) //将k的值全部压入数组 22 { 23 a[s++]=k%10; 24 k/=10; 25 } 26 } 27 for(i=s-1; i>=0; i--) //注意倒着输出 28 printf("%d",a[i]); 29 printf(" "); 30 } 31 return 0; 32 }