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还没转换.
  • 感觉最近睡的有点少, 该充电了.

代码

https://code.csdn.net/snippets/624452

posted @ 2015-03-20 23:25  wfwbz  阅读(88)  评论(0编辑  收藏  举报