binomialTable_constN() (二項係数テーブル $O(K)$)
(Math/Combinatorics/binomial-table-const-N.cpp)
Verified with
Code
#pragma once
#include <cstdint>
#include <vector>
/**
* @brief binomialTable_constN() (二項係数テーブル $O(K)$)
* binomial[k] = binomial(N, k) を O(K) で前計算する。
*/
template <class T>
std::vector<T> binomialTable_constN(int64_t N, int K) {
std::vector<T> binomial(K + 1);
binomial[0] = 1;
for (int i = 1; i <= K; ++i) {
binomial[i] = binomial[i - 1] * (N - i + 1) / i;
}
return binomial;
}
#line 2 "Math/Combinatorics/binomial-table-const-N.cpp"
#include <cstdint>
#include <vector>
/**
* @brief binomialTable_constN() (二項係数テーブル $O(K)$)
* binomial[k] = binomial(N, k) を O(K) で前計算する。
*/
template <class T>
std::vector<T> binomialTable_constN(int64_t N, int K) {
std::vector<T> binomial(K + 1);
binomial[0] = 1;
for (int i = 1; i <= K; ++i) {
binomial[i] = binomial[i - 1] * (N - i + 1) / i;
}
return binomial;
}
Back to top page