學習筆記 光速冪

2022-07-06 13:48:10 字數 886 閱讀 3422

對於 \(a^b \bmod p\),快速冪單次詢問是 \(o(\log b)\) 的。

而有的題目可能要去掉 \(\log\),就用到了光速冪。

令 \(b=k \times s+t\ \ (t \le s)\)

\(a^b \equiv a^ \times a^t\ (\bmod\ p)\)

於是就可以預處理出 \(a^1,a^2,\dots,a^s,a^,a^,\dots,a^}\right\rceil\times s}\)

當然要 \(\bmod\ p\)

然後 \(a^b \bmod p\) 就可以 \(o(1)\) 查詢了。

預處理在 \(s=\sqrt\) 時,時間複雜度最小,為 \(o(\sqrt)\)。

根據尤拉定理 \(a^b \equiv a^\ (\bmod p)\)

可以先把 \(b \bmod \phi(p)\)並且預處理到 \(\phi(p)\) 就可以了,到 \(p\) 只是方便寫。

//a^ks*a^t % p (t<=s)

#include#include#include#define ll long long

using namespace std;

const int bl=1<<16; //bl=sqrt(p)

ll b;

ll a,b,p;

ll qp[bl+10][2]; //0:a^t%p 1:a^is%p

ll read()

void init()

ll phi(int x)

if(x>1) res=res/x*(x-1);

return res;

}ll qpow(ll b)

int main()

機器學習光速入門

title style ocean 機器學習 machine learning,ml 是一門多領域交叉學科,涉及概率論 統計學 逼近論 凸分析 演算法複雜度理論等多門學科。專門研究計算機怎樣模擬或實現人類的學習行為,以獲取新的知識或技能,重新組織已有的知識結構使之不斷改善自身的效能。訓練資料由一組訓...

學習筆記 快速冪

求 m n k 快速冪 m n k int quickpow int m,int n,int k return b 快速冪,通過將n轉換成二進位制的方法優化運算。例如n 37 的時候 37 2 5 2 2 2 0 那麼m 37 k m 2 5 2 2 2 0 k m 2 5 m 2 2 m 2 0 ...

快速冪學習筆記

使用一般方法來計算x nx n xn需要計算n nn次,而快速冪就是一種只需要計算log 2 n log 2 n log2 n 次就可以計算出x nx n xn的演算法。1.n an b na b n an b n nanb n a b 容易得很,是八年級數學內容吧 2.二進位制 假設n 10 10...