-
-
Notifications
You must be signed in to change notification settings - Fork 7
/
fact.c
49 lines (49 loc) · 817 Bytes
/
fact.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
40
41
42
43
44
45
46
47
48
49
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<time.h>
int multiply(int *result,int x,int res_size)
{
int carry=0;
for(int i=0;i<res_size;i++)
{
carry=carry+result[i]*x;
result[i]=carry%10;
carry=carry/10;
}
while(carry)
{
result[res_size]=carry%10;
carry=carry/10;
res_size++;
}
return res_size;
}
void factorial(int n)
{
int *result=malloc(10000*sizeof(char));
int res_size=1;
result[0]=1;
for(int x=2;x<=n;x++)
{
res_size=multiply(result,x,res_size);
}
for(int i=res_size-1;i>=0;i--)
{
printf("%d",result[i]);
}
free(result);
}
int main(void)
{
clock_t start,end;
double cpu_time_used;
start=clock();
int num;
scanf("%d",&num);
factorial(num);
end=clock();
cpu_time_used=((double)(end-start))/CLOCKS_PER_SEC;
printf("\n%lf",cpu_time_used);
return 0;
}