您的位置:首页 > 其它

BZOJ-3122-随机数生成器-SDOI2013-BSGS

2015-03-20 23:25 239 查看

描述



分析

关键就是对式子的变形, 将原递推公式转化为通项公式, 中间会用到等比数列求和公式. 然后切记此时方程两边同乘(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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: