BZOJ-3122-随机数生成器-SDOI2013-BSGS
描述
分析
- 关键就是对式子的变形, 将原递推公式转化为通项公式, 中间会用到等比数列求和公式. 然后切记此时方程两边同乘(1-a), 然后就化简开了.
- 之后得到的式子是
a^(n-1) = ... (mod p)
然后就可以用BSGS求解了. 注意最后加1. - 公式明天补上
- 几种特判情况 :
- 如果a = 0, 这时 X = b, 如果t = b输出1, 否则输出-1
- 如果a = 1, 为什么这也要特判呢, 因为等比数列求和公式里的q一定不为1.
此时Xi = Xi-1 + b是等差数列 Xn = X1 + (n-1) * b (mod p), i = (Xn - X1 + b) * b^(-1)
这时还需要看如果b = 0, 输出-1; 如果Xn-X1+b = 0, 求出 i = 0, 但是想想实际情况应该是第 p 天才看到那一页
- 现在写代码有点不走脑子, 调了半天发现我图省事把变量全开long long结果就是有个地方开了int还没转换.
- 感觉最近睡的有点少, 该充电了.