日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

BSGS扩展BSGS

發布時間:2025/7/14 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 BSGS扩展BSGS 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

BSGS

  給定\(a,b,p\),求\(x\)使得\(a^x\equiv b \pmod p\),或者說明不存在\(x\)
  只能求\(\gcd(a,p)=1\)的情況
  有一個結論:如果有解則必然存在\(x\in\left\{0\ldots p-1\right\}\)的解
  設\(q=\lceil\sqrt p\rceil,x=cq-d\)
  \[a^{cq-d}\equiv b\pmod p\]
  \[a^{cq}\equiv b\times a^d\pmod p\]
  先枚舉\(d\in\left\{1\ldots q\right\}\),把\(b\times a^d \pmod p\)塞進哈希表里
  再枚舉\(c\in\left\{1\ldots q\right\}\),查詢\(a^{cq}\)是否在哈希表內
  最后\(cq-d\)就是答案
  

擴展BSGS

  能求\(\gcd(a,p)\neq1\)的情況。
  設\(s=\gcd(a,p)\)
  若\(s\nmid b\)則無解
  設\(a'=\frac{a}{s},b'=\frac{s},p'=\frac{p}{s}\)
 \[(a's)^x\equiv b's\pmod {p's}\]
 \[a'a^{x-1}\equiv b' \pmod {p'}\]
  這樣每次\(p\)都會除以一個大于\(2\)的數,這個過程一定會停止(\(O(\log p)\)次)
  最后會得到
 \[da^{x-k}\equiv b\pmod p\]
  把計算出來的\(x\)加上\(k\)輸出就可以了。
  但是可能存在小于\(k\)的答案
  直接枚舉\(0\)~\(k\),判斷是否合法。

一些其他的東西

  sdchr大爺說可以直接按照普通BSGS的方法做,然后把我的隨機數據過掉了,但被我hack了。
  表面上看當\(\gcd(a,p)\neq1\)時BSGS也可以做,但是,
\[a^{cq-d}\equiv b\pmod p\Rightarrow a^{cq}\equiv ba^d\pmod p \]
\[a^{cq-d}\equiv b\pmod p\nLeftarrow a^{cq}\equiv ba^d\pmod p\]
  1式能推出2式,但2式不能推出1式(要兩邊同時除以\(a\)的逆元)
  所以這是不對的

轉載于:https://www.cnblogs.com/ywwyww/p/8510957.html

總結

以上是生活随笔為你收集整理的BSGS扩展BSGS的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。