Мне было любопытно, был ли хороший способ сделать это. Мой текущий код выглядит примерно так:
def factorialMod(n, modulus):
ans=1
for i in range(1,n+1):
ans = ans * i % modulus
return ans % modulus
Но это кажется довольно медленным!
Я также не могу вычислить n! а затем применить простой модуль, потому что иногда n настолько велико, что n! просто невозможно вычислить явно.
Я также столкнулся с http://en.wikipedia.org/wiki/Stirling%27s_approximation и задаюсь вопросом, может ли это вообще быть использовано здесь?
Или, как я могу создать рекурсивную, memoized функцию в С++?