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. win10 update orchestratorservere禁用

      1 Windows 10系统中有一项Update Orchestrator Service(更新协调器办事),在当地办事窗口中,我们发现 Update Orchestrator Service 办 ...

  2. E. Sonya and Ice Cream(开拓思维)

    E. Sonya and Ice Cream time limit per test 2 seconds memory limit per test 256 megabytes input stand ...

  3. springboot之模板

    转:http://jisonami.iteye.com/blog/2301387,http://412887952-qq-com.iteye.com/blog/2292402 整体步骤:(1)     ...

  4. php SPL四种常用的数据结构

    1.栈[先进后出] $stack = new SplStack(); $stack->push('data1'); $stack->push('data2'); $stack->pu ...

  5. Rem与em的简单理解

    Rem与em的简单理解 Em单位与像素px的转换 所得的像素值 = 当前元素的font-size * em的值 比如:div的font-size:12px 10em等同于120px 12*10 =12 ...

  6. 转:java 帐号激活与忘记密码 实例

    原文链接:http://endual.iteye.com/blog/1613679 一.帐户激活   在 很多时候,在某些网站注册一个用户之后,网站会给这个用户注册时填写的email地址发送一封帐户激 ...

  7. 基于多线程的TCP socket通信经典案例

    服务器端 package com.thinkvenus.study.socket; import java.io.BufferedReader; import java.io.IOException; ...

  8. 【Foreign】石子游戏 [博弈论]

    石子游戏 Time Limit: 10 Sec  Memory Limit: 256 MB Description Input Output 输出T行,表示每组的答案. Sample Input 3 ...

  9. [BZOJ1024][SCOI2009]生日快乐解题报告

    Description windy的生日到了,为了庆祝生日,他的朋友们帮他买了一个边长分别为 X 和 Y 的矩形蛋糕.现在包括windy,一共有 N 个人来分这块大蛋糕,要求每个人必须获得相同面积的蛋 ...

  10. 12.22笔记(关于CALayer//Attributes//CALayer绘制图层//CALayer代理绘图//CALayer动画属性//CALayer自定义子图层//绘图pdf文件//绘图渐变效果)

    12.22笔记 pdf下载文件:https://www.evernote.com/shard/s227/sh/f81ba498-41aa-443b-81c1-9b569fcc34c5/f033b89a ...