BSGS离散对数(Baby-Step-Giant-Step)

题目:

给定\(x,y,p,\)求最小的自然数\(k\)满足\(x^k=y(\mod p)\)\(p\le2^{31}\)(满足一定有答案)

题解:

因为\(x^{p-2}=1\pmod{p}\)

那么答案最大不会超过\(p-2\),因为大于的话直接减掉\(p-2\)同样成立

直接枚举复杂度是\(O(p)\)级别的

考虑\(k\)可以表示成\(a\sqrt p +b\)的形式,那么我们考虑要怎么求\(a,b\)

若\(a,b\)满足要求,既\(x^{a\sqrt p }\times x^{b}=y \pmod{p}\)

既\(x^{a\sqrt p}=y\times x^{-b} \pmod{p}\)

那么,如果我们对于每个\(x^{a\sqrt(p)}\)都可以\(O(1)\)判断,那么整个算法的复杂度就可以降到\(O(\sqrt p)\)

对于\(1\)到\(\sqrt p\)我们直接处理,将其\(x^{-b}\times y\pmod{p}\)插入哈希表(因为p太大了所以不能直接用数组)。

那么对于每个\(x^{a\sqrt{p}}\)即可在哈希表中查找。

那么复杂度就是\(O(\sqrt{p}\times 哈希表常数)\)

即可解决问题\(√\)

核心思想:

暴力出奇迹,转成根号级别的暴力,复杂度就对了。

BSGS离散对数(Baby-Step-Giant-Step)的更多相关文章

  1. 数论之高次同余方程(Baby Step Giant Step + 拓展BSGS)

    什么叫高次同余方程?说白了就是解决这样一个问题: A^x=B(mod C),求最小的x值. baby step giant step算法 题目条件:C是素数(事实上,A与C互质就可以.为什么?在BSG ...

  2. HDU 2815 Mod Tree 离散对数 扩张Baby Step Giant Step算法

    联系:http://acm.hdu.edu.cn/showproblem.php?pid=2815 意甲冠军: watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQ ...

  3. 【学习笔记】Baby Step Giant Step算法及其扩展

    1. 引入 Baby Step Giant Step算法(简称BSGS),用于求解形如\(a^x\equiv b\pmod p\)(\(a,b,p\in \mathbb{N}\))的同余方程,即著名的 ...

  4. 解高次同余方程 (A^x=B(mod C),0<=x<C)Baby Step Giant Step算法

    先给出我所参考的两个链接: http://hi.baidu.com/aekdycoin/item/236937318413c680c2cf29d4 (AC神,数论帝  扩展Baby Step Gian ...

  5. 『高次同余方程 Baby Step Giant Step算法』

    高次同余方程 一般来说,高次同余方程分\(a^x \equiv b(mod\ p)\)和\(x^a \equiv b(mod\ p)\)两种,其中后者的难度较大,本片博客仅将介绍第一类方程的解决方法. ...

  6. POJ 3243 Clever Y (求解高次同余方程A^x=B(mod C) Baby Step Giant Step算法)

    不理解Baby Step Giant Step算法,请戳: http://www.cnblogs.com/chenxiwenruo/p/3554885.html #include <iostre ...

  7. 【POJ2417】baby step giant step

    最近在学习数论,然而发现之前学的baby step giant step又忘了,于是去翻了翻以前的代码,又复习了一下. 觉得总是忘记是因为没有彻底理解啊. 注意baby step giant step ...

  8. [置顶] hdu2815 扩展Baby step,Giant step入门

    题意:求满足a^x=b(mod n)的最小的整数x. 分析:很多地方写到n是素数的时候可以用Baby step,Giant step, 其实研究过Baby step,Giant step算法以后,你会 ...

  9. HDU 2815 扩展baby step giant step 算法

    题目大意就是求 a^x = b(mod c) 中的x 用一般的baby step giant step 算法会超时 这里参考的是http://hi.baidu.com/aekdycoin/item/2 ...

  10. POJ 2417 Discrete Logging ( Baby step giant step )

    Discrete Logging Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 3696   Accepted: 1727 ...

随机推荐

  1. spring boot 中 Mybatis plus 多数据源的配置方法

    最近在学习spring boot,发现在jar包依赖方面做很少的工作量就可以了,对于数据库操作,我用的比较多的是mybatis plus,在中央仓库已经有mybatis-plus的插件了,对于单数据源 ...

  2. bootstrap 组件之"导航条"

    一个典型的导航条基本代码如下: <nav class="navbar navbar-default"> <div class="container&qu ...

  3. 关于IDEA无法引入包和类的情况

    原因:修改一些包结构后,会出现无法将类引入的情况. 通过清理缓存解决:

  4. 微信官方团队放出了UI库,看来以后前端还要学WeChatUI了,哈哈

    已经在github上发布,网址如下:https://github.com/weui/weui

  5. 如何清除PHP中不需要的Layout模板

    最简单的办法就是在需要清除的静态页的最前端加上   {__NOLAYOUT__}  就可以清除所有的layout效果, 继而设置自己的css.js效果.

  6. c#统计代码行数

    小编,已经快学了两年编程了.昨天突发奇想,想统计下这些年到底写过多少行代码,于是做了一个这个小程序来统计代码行数.老规矩,先上图. 比较惭愧,写了两年只有2万多行.那我们还是进入下一项吧. 界面搭建我 ...

  7. Git快速入门和常用命令

    一.快速入门 本地初始化一个项目 首先,你需要执行下面两条命令,作为 git 的基础配置,作用是告诉 git 你是谁,你输入的信息将出现在你创建的提交中. git config --global us ...

  8. UWP 判断Windows10系统版本

    , ); , ); , ); , ); if(VersionsHelper.Windows10Build15063) { }

  9. 初识java这个小姑娘(一)

    忽然想起这样一个场景:那时我还是小学三年级的一个小学生,上课的铃声响起,文艺委员起头,大家开始胡乱的开始唱歌,"让我们荡起双桨,小船儿推开波浪",歌声在一片稚气中慢慢停止.我们的语 ...

  10. Codeforces Gym 101521A Shuttle Bus

    题意:给定一个2*N的方格,从左上角开始走,有些格子不能走,问能否一次遍历所有能走的方格 在Gym上看到一场香港的比赛,很好奇就去看了一下,发现第一题很有趣,并且很水,似乎讨论一下奇偶性就行了,然后. ...