重要的數論函式:
ε(n), 1(n), id(n), μ(n), φ(n), τ(n)
dirichlet卷積
dirichlet 卷積學習筆記-露迭月 感覺這篇部落格講的比較通透、系統。
由此還尋找到了另一篇講的很好的dirichlet卷積的部落格 鈴懸的數學小講堂——狄利克雷卷積與莫比烏斯反演
事實上,單從mobius的表示式來看它實在是太突兀了,我們應該在dirichlet卷積的角度下認識這個函式。「dirichlet卷積與數論函式共同構成了群」,而群具有逆元與么元,這裡的么元很自然的就是1,那麼我們就定義mobius函式是1的逆,也就是μ * 1 = ε,之後通過嘗試構造可以得到mobius函式的表示式。
下面介紹幾個常見的卷積:
φ * 1(n) = id(n)
定理證明:
等式兩邊再卷上1的逆——μ後可得:φ(n) = id * μ(n)
τ(n) = 1 * 1(n)
根據定義這是顯然的。
等式兩邊卷上1的逆後可得:1(n) = μ * τ(n)
mobius函式還有一些性質,這篇部落格(mobius函式)對其中的三個(mobius是積性函式、mobius的表示式、φ(n) = id * μ(n))進行了乾淨漂亮的說明。
mobius反演:
根據「逆」這一重要概念,我們可以方便地得到mobius反演的結論:
形式1(約數反演):若f(n) = f * 1(n),則f(n) = f * μ(n)
形式2(倍數反演):若f(n) = σf(d)[n \ d] = σf(i * d),則f(n) = σμ(d / n)f(d)[n \ d]
素數篩法
1.線性篩(尤拉篩)
int prime[maxn];
int visit[maxn];
void prime()
for (int j = 1; j <=prime[0] && i*prime[j] <= maxn; j++) }}
}
尤拉篩保證每個數隻被最小素因子篩一遍,所以其時間複雜度約為線性的。
昨天晚上cf遇到個1e6的篩法我忘記了以前在vj**寫過euler篩了…找自己的部落格想了半天發現好像是沒有整理…
2.杜教篩
參見部落格 杜教篩
推導過程省略,直接貼上最終的恒等式關係。我們的目的就是尋找乙個恰當的函式g(n)可以使得h(n) = f * g(n)是乙個容易求字首和的函式,後面的式子則通過數論分塊的辦法來求和即可。
下面我們看乙個杜教篩的模版: 洛谷p4213 杜教篩
(2)用無序map記錄σf(n),預處理ll sump[maxn]、sum[maxn]。maxn開太小會tle,找乙個合適的maxn(比如5e6)可以ac。
(3)注意到n最大可能取到0x7fffffff,這個時候如果指標i指向j + 1,極有可能會爆到乙個負數上,所以我們需要對這種情況進行乙個特判!
ac**
2019暑訓8月5號 網路流
memset的乙個用法 memset 0x3f 也可以近似的填充出乙個inf,是1e9的數量級 1061109567 而且可以滿足加上乙個數值 1e9 後仍然是int。具體參見部落格 memset函式詳解 最大流的三個演算法 樸素ff演算法 ek演算法 dinic演算法 參見部落格 網路流基礎 di...
隨筆 8月14日
懶惰的情緒總是很難牴觸,即使很多時候我們已經很努力克制自己,但是大腦中去總有一種負面的情緒。這最終不是我們能控制的了的,最好的方法是把它當做自己的孩子或學生來培養,不要從心理層面上過於自責,要善待自己,調節好心態,才能從積極的一面理性的思考自己應該去怎麼做,才能戰勝自己。今天早上起床學英語有點懶散,...
8月14日pwn學習
題目描述 菜雞面對著printf發愁,他不知道printf除了輸出還有什麼作用。題目分析 照著題目描述來看,應該是格式化字串的漏洞。老規矩,照著步驟走 由上面的我們用32位的idapro開啟。可以看到結構也十分簡單,pwnme等於8的時候,就可以得到flag 這裡也一樣要搞清楚在資料棧中偏移了多少。...