43 lines
705 B
C
43 lines
705 B
C
|
//
|
||
|
// Created by maximilian on 2/9/24.
|
||
|
//
|
||
|
|
||
|
#ifndef ENDGAME_ANALYZER_FACTORIAL_H
|
||
|
#define ENDGAME_ANALYZER_FACTORIAL_H
|
||
|
|
||
|
#include <cstdint>
|
||
|
|
||
|
namespace Factorial {
|
||
|
inline std::uint64_t factorial(std::size_t n)
|
||
|
{
|
||
|
static const std::uint64_t table[] = {
|
||
|
1,
|
||
|
1 ,
|
||
|
2 ,
|
||
|
6 ,
|
||
|
24 ,
|
||
|
120 ,
|
||
|
720 ,
|
||
|
5040 ,
|
||
|
40320 ,
|
||
|
362880 ,
|
||
|
3628800 ,
|
||
|
39916800 ,
|
||
|
479001600 ,
|
||
|
6227020800 ,
|
||
|
87178291200 ,
|
||
|
1307674368000 ,
|
||
|
20922789888000 ,
|
||
|
355687428096000 ,
|
||
|
6402373705728000 ,
|
||
|
121645100408832000 ,
|
||
|
2432902008176640000 ,
|
||
|
};
|
||
|
assert(n <= 20);
|
||
|
return table[n];
|
||
|
}
|
||
|
}
|
||
|
|
||
|
|
||
|
#endif //ENDGAME_ANALYZER_FACTORIAL_H
|