我想计算
的值F(N)=(F(N-1)* [((N-R + 1)^(N-R + 1))/(R ^ R)])mod M对于给定的N值, R和M.
这里A ^ B显示A功率B而不是任何按位运算
这里M不需要是素数。如何处理这个问题?请帮助,因为如果M是素数,那么就不会很难找到R ^ R mod M的逆。
但由于M可以是1到10 ^ 9之间的任何值。我无法解决这个问题。
N可以在1和10 ^ 5之间,R小于或等于N.
答案 0 :(得分:1)
假设你知道分裂的结果是一个整数:
由于N和R很小,你可以通过计算N-R + 1和R的素因子化来做到这一点。
如果我们知道R=p^a...q^b
,那么R^R = p^(Ra)...q^(Rb)
。
同样,你可以计算出(N-R+1)^(N-R+1)
中每个素数的力量。
从R^R
中的素数幂中减去(N-R+1)^(N-R+1)
中素数的幂数,得出结果中每个素数的幂。
然后,您可以使用标准二进制取幂例程来计算结果模M,而不需要反转。