blob: a146e4d682a36e296972646d5b644e2e3548f283 (
plain)
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
|
#include <math.h>
static unsigned int FACT_TABLE[] = {
1, // 0
1, // 1
2, // 2
6, // 3
24, // 4
120, // 5
720, // 6
5040, // 7
40320, // 8
362880, // 9
3628800, // 10
39916800, // 11
479001600, // 12
};
unsigned long long fact(unsigned int num) {
if (num < 13) {
return FACT_TABLE[num];
}
unsigned long long l = FACT_TABLE[12];
for (unsigned int i = 12; i < num;) {
i++;
l *= i;
}
return l;
}
|