|
|
вернуться в форумa idea since X,M,Y in [0,1000]... power(X,N) is very large, we can't to calculate! f(N) = X^N mod M = Y then, X^N=k*M+Y f(N+1) = X^(N+1) mod M = (X^N*X) mod M =(k*M*X+Y*X) mod M =Y*X mod M =f(N)*X mod M example for X,M,Y is 2,6,4. f(0)=2^0 mod 6 = 1 f(1)=f(0)*2 mod 6 = 2 f(2)=f(1)*2 mod 6 = 4 (ok) f(3)=f(2)*2 mod 6 = 2 f(4)=f(3)*2 mod 6 = 4 (ok) f(5)=f(4)*2 mod 6 = 2 f(6)=f(4)*2 mod 6 = 4 (ok) thanks. Re: a idea Послано iLko 3 дек 2012 02:00 an idea ! Re: a idea thanks for idea! But there is a mistake. Input format is N, M, Y. It seems that it is DP problem. So, you must define recursive function f(x, n, m) = { 1%m | if n is 0 f(x, n-1, m)*x % m | else } And call it for every x from 0 to m-1. Algorithm complexity is O(n^2) So, at worst case there will be at about 1 000 000 iterations. But it works. Thanks for idea! Good luck ;) |
|
|