對於 \(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...