首页 > 其他分享 >不可根号 BSGS 时的若干解决办法

不可根号 BSGS 时的若干解决办法

时间:2024-02-24 18:44:51浏览次数:24  
标签:解决办法 le log 离散 对数 根号 BSGS

许多题如果用 \(O(\sqrt p)\) 的 \(\texttt{BSGS}\) 会超时,下面是我见过的若干解决办法。

前置知识:原根,离散对数,阶,BSGS。下文设原根为 \(g\),\(\text{ord}_r(a)\) 表示 \(a\) 模 \(r\) 的阶。

科技

重新平衡复杂度

可以 \(O(B+\frac{np}{B})\) 求出 \(n\) 个数的离散对数,只是把原来的根号重新平衡了一下。具体来说:预处理 \(g^0,g^1,\dots,g^{B-1}\),记录到 map 上。查询时判断 \(x\times g^{kB}\) 在 map 上的值即可。应用:P9994

单次 \(\log\) 但预处理较慢

可以 \(O(\dfrac{p^{3/4}}{\log p})\) 预处理,\(O(\log p)\) 查询一个数的离散对数。这里 Ctrl+F:BSGS 即可

简单粗暴地应用:\(\forall 1\le i\le n\),求 \(i^i\) 对 \(10^9+7\) 取模,\(1\le n\le 2\times 10^7\)。更优秀地方法

取原根,转化为求 \(1\sim n\) 的离散对数,最后光速幂一下即可。

由于 \(\log(ab)=\log a+\log b\),于是只要求素数处的离散对数,套用上述方法即可。复杂度 \(O(\dfrac{n\log p}{\ln n}+\dfrac{p^{3/4}}{\log p})\),可以看做线性。

标签:解决办法,le,log,离散,对数,根号,BSGS
From: https://www.cnblogs.com/HaHeHyt/p/18031420

相关文章

  • BSGS学习笔记
    1.求解问题1.1.高次同余方程给定\(a,b,p\),\(a,p\)互质,求满足\(a^x\equivb(\bmod\p)\)的解\(x\)2.解法由扩展欧拉定理\(a^p\equiva^{x\mod\\varphi(p)}\(\bmod\p)\)得\(a^x\)模\(p\)意义下的最小循环节为\(\varphi(p)\)\(\because\\varphi(p)<p\)......
  • pip安装时WARNING: Ignoring invalid distribution -XX的解决办法
    安装一些包出现的问题如下:原因:原因是后面对应的目录文件夹下有不合法的文件存在,造成这个问题的原因很可能是原先下载包的过程中因为电脑没电关机了导致下载中断,导致出现了temp文件导致解析失败了。d:\app\anconda\envs\pytorch\lib\site-packages解决办法:将目录文件夹下含有......
  • 使用注解@Async实现异步执行未生效的解决办法
    使用注解@Async实现异步执行未生效的解决办法1、第一种:未在启动类上标注开启异步执行的注解 启动类 @SpringBootApplication@EnableScheduling@EnableAsync@EnableRedisHttpSession(maxInactiveIntervalInSeconds=3600*4)@MapperScan("com.*")publicclassApplicati......
  • #根号分治,分块,dfs序#洛谷 7710 [Ynoi2077] stdmxeypz
    题目传送门分析首先把距离变成深度,用dfs序转成区间问题,考虑分块,散块直接改问题是整块,如果模数比较大,可以以深度为第一维下标差分标记,这样查询时就可以前缀和知道答案如果模数比较小,那么给该块打标记,查询时枚举模数即可,然后块长取1000,模数阈值取300,就能尽量减少时间代码#in......
  • 跨域 解决办法:利用 Access-Control-Allow-Origin
    ASP.NET中WebAPI解决跨域问题https://www.jb51.net/article/240038.htm 传统的跨域请求没有好的解决方案,无非就是jsonp和iframe,随着跨域请求的应用越来越多,W3C提供了跨域请求的标准方案(Cross-OriginResourceSharing)。IE8、Firefox3.5及其以后的版本、Chrome浏览器、Saf......
  • #根号分治,分块#洛谷 5309 [Ynoi2011] 初始化
    题目传送门分析如果\(x\)比较大那么可以暴力修改,\(x\)比较小的话可以用数组打标记查询的时候对于暴力修改的部分可以分块,暴力修改的同时需要给块打标记如果\(x\)比较小的情况,一段区间相当于是中间很多段周期加上前后缀(当然可以直接区间减但是我被卡常了)我调的块长是160......
  • 运行Xmind出现invalid configuration location报错的解决办法
    问题说明安装了XMind后,直接点击*.xmind文件,提示报错“invalidconfigurationlocation”。错误提示内容为:Theconfigurationareaat‘C:\Windows\systems.\configuration’isnotwritable.Pleasechooseawritablelocationusingthe‘-configuration’commandlineo......
  • 系统表不存在执行升级(mysql_upgrade)操作报错误的解决办法(5.6升级到5.7)
    环境:OS:Centos7原db:5.6新db:5.7 执行升级命令报如下错误[root@hadoop-slave1mysql]#/home/middle/mysql57/bin/mysql_upgrade-s-hlocalhost-pyeemiao3040-P13306-S/home/middle/mysql57/data/mysql.sockmysql_upgrade:[Warning]Usingapasswordonthecomma......
  • SVN报错“Failed to run the WC DB work queue associated with”解决办法
    最近在checkSVN上的iOS代码时,失败报错:  FailedtoruntheWCDBworkqueueassociatedwith“目录/文件”,cleanup同样报错。最后在网上找到了解决方案并解决了问题,解决方法如下:一、安装sqlite31下载我是window1032位,下载以下文件:1.下载 sqlite-dll-win32-x86-......
  • nginx启动报错:ngx_http_image_filter_module.so" version 1016001 instead of 1022001
    问题现象,启动nginx,提示版本不对[root@k8s-test-node2modules]#/data/nginx/sbin/nginxnginx:[emerg]module"/usr/lib64/nginx/modules/ngx_http_image_filter_module.so"version1016001insteadof1022001in/usr/share/nginx/modules/mod-http-image-filter.conf:1......