Как мы можем решить уравнения, имеющие N!константы в нем, где N может иметь диапазон 1 <= N <= 10 ^ 6 BigInteger может выполнять только до 128 бит, верно?</p>
Даже если сделать логарифм с обеих сторон, он оставляет значения больше, чем BigInteger.
Нет, BigInteger может обрабатывать произвольные размеры целых чисел (ограничено памятью). Из документации :
BigInteger
Неизменный произвольная точность целые числа.
(Акцент мой.)
Это не значит, что BigInteger обязательно будет правильным ответом на ваши требования, но перед принятием решения стоит знать о его реальных возможностях.
Реализация BigInteger ограничена 2 ^ 2,1 млрд бит или около 256 МБ. Принимая во внимание то, что используется int для длины в битах, это вряд ли увеличится.
int
пусть N = 10 ^ 6
log(N!) ~ NlogN - N [Stirling's approximation] ~ 13e6
это может (легко) вписаться в int