// Success.
#include <iostream>
#include <type_traits>
#include <cstdint>
#include <ciso646>
template <int64_t N, int64_t K>
class Binomial
{
typedef typename std::enable_if<(N >= K and K >= 0), int64_t>::type type;
public:
static const type value = Binomial<N - 1, K - 1>::value +
Binomial<N - 1, K >::value;
};
template <int64_t N>
class Binomial<N, N>
{
public:
static const typename std::enable_if<(N >= 0), int64_t>::type value = 1;
};
template <int64_t N>
class Binomial<N, 0>
{
public:
static const typename std::enable_if<(N >= 0), int64_t>::type value = 1;
};
template <>
class Binomial<0, 0>
{
public:
static const int64_t value = 1;
};
int main()
{
std::cout << Binomial<50, 25>::value << std::endl;
std::cin.get();
return 0;
}
히익 흑마법사