Description
![[SDOI2013]随机数生成器_第1张图片](http://img.e-com-net.com/image/info8/ffc246900fa94a98b569b2625a7f3c35.jpg)
Input
输入含有多组数据,第一行一个正整数T,表示这个测试点内的数据组数。
接下来T行,每行有五个整数p,a,b,X1,t,表示一组数据。保证X1和t都是合法的页码。
注意:P一定为质数
Output
共T行,每行一个整数表示他最早读到第t页是哪一天。如果他永远不会读到第t页,输出-1。
Sample Input
3
7 1 1 3 3
7 2 2 2 0
7 2 2 2 1
Sample Output
1
3
-1
HINT
\(0\leqslant a\leqslant P-1,0\leqslant b\leqslant P-1,2\leqslant P\leqslant10^9\)
我们推推式子可以发现
\[ X_n=a^{n-1}X_1+\sum\limits_{i=0}^{n-2}a^ib \]
然后后面那玩意显然是等比数列,然后我们就可以得到
\[ \begin{align}X_n&=a^{n-1}X_1+\dfrac{b(1-a^{n-1})}{1-a}\nonumber\\&=a^{n-1}X_1+\dfrac{b}{1-a}-\dfrac{ba^{n-1}}{1-a}\nonumber\\&=a^{n-1}(X_1-\dfrac{b}{1-a})+\dfrac{b}{1-a}\nonumber\\\Longrightarrow\dfrac{X_nb}{1-a}&=a^{n-1}(X_1-\dfrac{b}{1-a})\nonumber\end{align} \]
然后直接用扩展BSGS就好了
/*program from Wolfycz*/
#include