0%

C-大数阶乘

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#include<iostream>
#include<algorithm>
#include<cmath>
#define Max 100000
using namespace std;
int num[Max],len;
void Init()
{
num[0]=1;
len=1;
}
int mult(int num[],int len,int n)//num为数据中的每一个数,len为数组长度
{
long long temp=0;
for(int i=0;i<len;++i)
{
temp=temp+num[i]*n;//关键代码
num[i]=temp%10;
temp=temp/10;
}
while(temp)//最大的数temp每个取一位
{
num[len++]=temp%10;
temp=temp/10;
}
return len;
}

int main()
{
int n;
Init();//初始化数据
cin>>n;
for(int i=2;i<=n;++i)
len=mult(num,len,i);//len即长度不断更新
for(int i=len-1;i>=0;i--)
cout<<num[i];
return 0;
}