題目鏈結
已知$g^a=a$和$g^b=b$,求$g^\bmod p$,可以先求$a$,再得$b^a$。
也即,在$g^a\equiv a\pmod p$中求$a$。顯然$bsgs$。
$g$是原根,這就意味著$g^t\bmod p\;(0\leq t
如何加速?考慮一種拆分方法使得可以預處理一部分,即設$t=i\times m-j$,移項,得到$g^\equiv a\times g^j\pmod p$。
預處理:算出所有$g^$插入到桶裡(使用$stl-map$)。使用容器之後要注意常數。
可以發現,當$m=\lceil\sqrt\,\rceil$時有最優複雜度。
#include#includeview code#include
#include
#include
#include
#include
#include
#include
#define il inline
#define rg register
#define _1 first
#define _2 second
using
namespace
std;
typedef
long
long
ll; ll g,p,m;
il ll qpow(ll a,ll b)
return
ret;
}
maps;il
void
init()
}il ll calc(ll t)
return0;
}int
main()
return0;
}
高階列舉方法get√
CQOI 2018 破解D H協議
傳送門 題目描述 diffie hellman 金鑰交換協議是一種簡單有效的金鑰交換方法。它可以讓通訊雙方在沒有事先約定金鑰 密碼 的情況下,通過不安全的通道 可能被竊聽 建立乙個安全的金鑰 k kk,用於加密之後的通訊內容。假定通訊雙方名為 alice 和 bob,協議的工作過程描述如下 其中 m...
BSGS CQOI2018 破解D H協議
bsgs演算法,又稱大小步演算法 某大神稱拔山蓋世演算法 主要用來解決 a x b mod c c是質數 都是整數,已知a b c求x。具體步驟如下 先把x i m j,其中m ceil sqrt c ceil是向上取整 這樣原式就變為a i m j b mod c 再變為a j b a m i m...
CQOI2018 社交網路
當今社會,在社交網路上看朋友的訊息已經成為許多人生活的一部分。通常,乙個使用者在社交網路上發布一條訊息 例如微博 狀態 tweet等 後,他的好友們也可以看見這條訊息,並可能 的訊息還可以繼續被人轉 發,進而擴散到整個社交網路中。在乙個實驗性的小規模社交網路中我們發現,有時一條熱門訊息最終會被所有人...