factorial 21
переполняется и возвращает неверный результат.Значение max_int
в моей 64-битной установке составляет 4611686018427387903, что составляет всего лишь 20!и 21!.
Чтобы обойти это, вы можете избежать фактического вычисления значения n!(или к!) уб binomial_coeff
.Вместо этого рассчитайте более сложные значения.Например, вместо n!/k!
вы можете использовать (k+1)*(k+2)*...*n
.