Problem
给定$g,P,A,B$,其中$P$为质数
并且满足:
$g^a=A\ \ mod\ \ P$
$g^b=B\ \ mod\ \ P$
Solution
又是知道板子直接A系列……
用到了BSGS(大步小步法)……
还是介绍一下吧……
BSGS主要用来解决$A^x\equiv B\ (\ mod\ C)$已知$A,B,C$(其中$C$为质数)求$x$。
具体实现其实还挺好理解的
令$D = A^\sqrt {C}$
通过枚举$i$我们有:
$D^i*A^{x_0}\equiv B\ (\ mod\ C)$
有没有一种熟悉的感觉?
表示没有
由于$D^i,B,C$都是已知数,所以我们可以通过解同余方程得到一个解$X$,然后判断$X$是否可表示为$A^{x_0}$这种形式……
那么只需在预处理时用$map/hash$将$A^i,i∈[1,\sqrt C]$存下来即可。
对于这道题:
知道了BSGS的话直接粘板子,稍微改一下就可以A了……
上代码:
Code
1 |
|