我有一个功能
f(x)=(1^1)*(2^2)*(3^3)*.....(x^x)
我必须计算(f(x)/(f(x-r)*f(r)))modulo c
我可以计算f(x)和(f(x-r)* f(r))。
假设f(x)是a
f(x-r)* f(r)是b。
c是一些非常大的数字。 ``
所以我怎么能算出(a/b)%c
答案 0 :(得分:0)
你的f(x)只是ᴨ(PI累积乘法)的平方
g(x0,x1)=x0*(x0+1)*(x0+2)*...*x1
f(x)=g(1,x)^2
计算h(x,r,c)=f(x)/(f(x-r)*f(r))%c
h(x,r,c)=((g(1,x)/(g(1,x-r)*g(1,r)))^2)%c
sqr
为最后一个(不需要在子结果中)g(1,x-r)
或g(1,r)
(x-r>r)
那么:h(x,r,c)=(g(x-r+1,x)/g(1,r)^2)%c
h(x,r,c)=(g(r+1,x)/g(1,x-r)^2)%c
一些数学调整
如果x
很大且r
很小
b
a
b
a
除以b
并将结果添加到最终的分割结果一些速度提升
a,b
a>1000000
,那么等到b
也是如此大或整个b>100000
....)希望我没有犯一些愚蠢的数学错误...