总时间限制: 5000ms 内存限制: 655360kB描述
求10000以内n的阶乘。
输入只有一行输入,整数n(0<=n<=10000)。输出一行,即n!的值。样例输入
100
样例输出
93326215443944152681699238856266700490715968264381621468592963895217599993229915608941463976156518286253697920827223758251185210916864000000000000000000000000
来源JP06
1 #include<iostream>
2 #include<cstdio>
3 #include<cmath>
4 #include<cstring>
5 using namespace std;
6 int a[1000001]={1};
7 int ans[10000001]={1};
8 char n[1001];
9 int en[1001];
10 int main()
11 {
12 int n;
13 cin>>n;
14 int lans=1;
15 int x=0;
16 for(int i=1;i<=n;i++)
17 {
18
19 for(int j=0;j<lans;j++)
20 {
21 a[j]=a[j]*i+x;
22 x=a[j]/10;
23 if(x>0&&j==lans-1)
24 lans++;
25 a[j]=a[j]%10;
26 }
27 }
28 int flag=0;
29 for(int i=lans;i>=0;i--)
30 {
31 if(a[i]==0&&flag==0)
32 continue;
33 else flag=1;
34 cout<<a[i];
35 }
36 return 0;
37 }