Я хочу вычислить значение
X =n!/2^r
where n<10^6 and r<10^6
and it's guarantee that value of X is between O to 10
Как вычислить X, так как я не могу просто разделить факториал и степень, так как они переполняют длинное целое число.
Мой подход
Делайте с помощью Modulus. Возьмем простое число больше 10, скажем, 101
X= [(Factorial N%101)*inverse Modulo of(2^r)]%101;
Обратите внимание, что можно легко вычислить обратное значение по модулю, а также вычислить 2^r%101.
Проблема:
Не гарантируется, что X всегда будет целым числом, оно также может быть числом с плавающей запятой. Мой метод отлично работает, когда X является целым числом? Как поступить, когда X является числом с плавающей запятой
3/2.0*4/2.0*5/2.0*...
? - person barak manos   schedule 07.02.2017