binomial() (二項係数 $O(K)$)
(Math/Combinatorics/binomial-O(K).cpp)
Verified with
Code
#pragma once
#include <cstdint>
/**
* @brief binomial() (二項係数 $O(K)$)
*/
template <class T>
T binomial(int64_t n, int k) {
if (k < 0 || n < k) return 0;
T nume = 1, deno = 1;
for (int i = 1; i <= k; ++i) {
nume *= n - i + 1;
deno *= i;
}
return nume / deno;
}
#line 2 "Math/Combinatorics/binomial-O(K).cpp"
#include <cstdint>
/**
* @brief binomial() (二項係数 $O(K)$)
*/
template <class T>
T binomial(int64_t n, int k) {
if (k < 0 || n < k) return 0;
T nume = 1, deno = 1;
for (int i = 1; i <= k; ++i) {
nume *= n - i + 1;
deno *= i;
}
return nume / deno;
}
Back to top page