BSGS

  $Big\ Step\ Giant\ Step$,大步小步法,一种在$O(\sqrt{p})$内求解方程$a^x\equiv b (mod\ p)$的算法。

  先考虑$p$为质数的情况。

  令$x=im-j$,$m=\lceil \sqrt{p} \rceil$(注意是上取整,要保证大步比小步大),则$a^{im-j}\equiv b(mod\ p)$。

  移项,有$(a^m)^i\equiv ba^j(mod\ p)$。

  首先$0-i$枚举$j$,将$ba^j$存入哈希表。在$1-m$枚举$i$,计算$(a^m)^i$并查询是否存在$ba^j$与之相等,由于大步比小步大,所以找到的一个满足条件的$im-j$就是答案。

  $p$不为质数的情况:exBSGS

二次剩余

  http://blog.miskcoo.com/2014/08/quadratic-residue

  https://blog.csdn.net/l_0_forever_lf/article/details/79052135

  https://blog.csdn.net/qq_35649707/article/details/78922508

  二次剩余有$O(\log^2 n)$的优秀做法,但这里只介绍$O(\sqrt{p})$的奇质数做法。

  二次剩余是指:求解$x^2\equiv a(mod\ p)$

  先介绍几个概念(不一定用的上):

    1.勒让德符号:$\left(\frac a p \right)$为0时表示$a \mod\ p=0$,为1时表示$a$是$p$的二次剩余(即存在模意义下平方根),为-1时表示不是。有定理(后面会证明):$$\left({\frac a p}\right) \equiv a^{\frac{p-1}{2}}(mod\ p)$$

    2.p一共有$\frac{p+1}{2}$个二次剩余,$\frac{p-1}{2}$个非二次剩余。

    因为$a^2\equiv (p-a)^2(mod\ p)$,故至多只有$\frac{p+1}{2}$个数存在平方根。

    3.$(a+b)^p\equiv a^p+b^p(mod\ p)$。

  下面证明定理一(以下省略$\mod\ p$):

    充分性:$a^{\frac{p-1}{2}}\equiv (x^2)^{\frac{p-1}{2}}\equiv x^{p-1}$,由费马小定理得证。

    必要性:考虑$a$在模$p$意义下的原根$g$,$a\equiv g^i$,则有$g^{\frac{i(p-1)}{2}}\equiv 1$,取$x=g^{\frac i 2}$即可。

    证毕。同时我们也得到了一个$O(\sqrt{p})$求奇质数二次剩余的方法:先求出$a$的原根,再用$BSGS$求出$g^k\equiv 1$,则答案为$g^{\frac{k}{p-1}}$。

BSGS与二次剩余的更多相关文章

  1. 【BZOJ5104】Fib数列(BSGS,二次剩余)

    [BZOJ5104]Fib数列(BSGS,二次剩余) 题面 BZOJ 题解 首先求出斐波那契数列的通项: 令\(A=\frac{1+\sqrt 5}{2},B=\frac{1-\sqrt 5}{2}\ ...

  2. BZOJ5104 Fib数列(二次剩余+BSGS)

    5在1e9+9下有二次剩余,那么fib的通项公式就有用了. 已知Fn,求n.注意到[(1+√5)/2]·[(1-√5)/2]=-1,于是换元,设t=[(1+√5)/2]n,原式变为√5·Fn=t-(- ...

  3. cdqz2017-test1-数论 (BSGS + 二次剩余 + CRT)

    若m=0, 就是求n^2n ≡ x mod p (x--) 因为一定优解,所以x一定是p的二次剩余 令g为p的1个原根,且g^k ≡ x mod p 则k是偶数,证明k是偶数: 假设 g1^k1 ≡ ...

  4. Codechef:Fibonacci Number/FN(二次剩余+bsgs)

    题面 传送门 前置芝士 \(bsgs\),\(Cipolla\) 题解 因为题目保证\(p\bmod 10\)是完全平方数,也就是说\(p\bmod 5\)等于\(1\)或\(-1\),即\(5\)是 ...

  5. 省选算法学习-BSGS与exBSGS与二次剩余

    前置知识 扩展欧几里得,快速幂 都是很基础的东西 扩展欧几里得 说实话这个东西我学了好几遍都没有懂,最近终于搞明白,可以考场现推了,故放到这里来加深印象 翡蜀定理 方程$ax+by=gcd(a,b)$ ...

  6. BZOJ 5104 Fib数列(二次剩余+BSGS)

    斐波那契数列的通项: \[\frac{1}{\sqrt{5}}((\frac{1+\sqrt{5}}{2})-(\frac{1-\sqrt{5}}{2}))\] 设T=\(\sqrt{5}*N\),\ ...

  7. Codechef:Fibonacci Number/FN——求通项+二次剩余+bsgs

    题意 定义 $F_n$ 为 $$F_n = \left\{\begin{matrix}0, n=0\\ 1, n=1 \\F_{n-1} + F_{n-2}, n > 1\end{matrix} ...

  8. BZOJ5104 Fib数列 二次剩余、BSGS

    传送门 发现只有通项公式可以解决考虑通项公式 \(F_n = \frac{1}{\sqrt{5}}((\frac{1+\sqrt{5}}{2})^n - (\frac{1-\sqrt{5}}{2})^ ...

  9. bzoj5104 Fib数列(BSGS+二次剩余)

    快AFO了才第一次写二次剩余的题…… 显然应该将Fn写成通项公式(具体是什么写起来不方便而且大家也都知道),设t=((1+√5)/2)n,T=√5N,然后可以得到t-(-1)t/t=√5N,两边同时乘 ...

随机推荐

  1. BZOJ1051:受欢迎的牛(并查集 / Tarjan)

    1051: [HAOI2006]受欢迎的牛 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 8161  Solved: 4460 Description ...

  2. Python爬虫学习笔记之爬取新浪微博

    import requests from urllib.parse import urlencode from pyquery import PyQuery as pq from pymongo im ...

  3. (转)Notepad++

    包括notepad++的详细的安装过程,插件使用说明,技巧…… crifan http://www.crifan.com/files/doc/docbook/rec_soft_npp/release/ ...

  4. iconfont字体图标

    1.1.进入阿里图标网站 http://www.iconfont.cn/ 1.2.在购物车里添加自己需要的字体图标 1.3.下载代码 1.4.解压过后,找到iconfont.css,放在你的项目里,需 ...

  5. 转:Linux下使用Nginx搭建简单图片服务器

    最近经常有人问图片上传怎么做,有哪些方案做比较好,也看到过有关于上传图片的做法,但是都不是最好的,今天再这里简单讲一下Nginx实现上传图片以及图片服务器的大致理念. 如果是个人项目或者企业小项目,仅 ...

  6. Codeforces Round #300 解题报告

    呜呜周日的时候手感一直很好 代码一般都是一遍过编译一遍过样例 做CF的时候前三题也都是一遍过Pretest没想着去检查... 期间姐姐提醒说有Announcement也自信不去看 呜呜然后就FST了 ...

  7. [bzoj3697]采药人的路径——点分治

    Brief Description 采药人的药田是一个树状结构,每条路径上都种植着同种药材. 采药人以自己对药材独到的见解,对每种药材进行了分类.大致分为两类,一种是阴性的,一种是阳性的. 采药人每天 ...

  8. memcached启动脚本(class练习)

    说明:使用类的方式编写程序启动脚本(memcached) import time import os from subprocess import Popen,PIPE class Process(o ...

  9. Django-views,用户认证,login_requierd()

    分别是认证,登入,注销的功能 authenticated():验证是否登录 user = authenticate(username='someone',password='somepassword' ...

  10. C#区分大小写

    连属性也是要区分大小写的,如 获取数据长度 错误:strs.length 这样是报错的 正确:strs.Length