反演區

莫比烏斯反演

這就是個毒瘤...html

ide

則有函數

這個不經常使用...spa

下面這個用的多一點。3d

code

則有htm

設 nt = d 則有blog

此處N爲枚舉上界。get

莫比烏斯函數的來源:數學

由F(x)倒推出f(x)的時候F(x)前面的係數爲miu(x)

求和交換的一些技巧:

 

打表n = 60便可(僞)證實。

沒了。這TM比《組合數學》上面講的簡單多了...

 1 inline void getmiu(int b) {
 2     miu[1] = 1;
 3     for(int i = 2; i <= b; i++) {
 4         if(!vis[i]) {
 5             p[++top] = i;
 6             miu[i] = -1;
 7         }
 8         for(int j = 1; j <= top && i * p[j] <= b; j++) {
 9             vis[i * p[j]] = 1;
10             if(i % p[j] == 0) {
11                 break;
12             }
13             miu[i * p[j]] = -miu[i];
14         }
15     }
16     return;
17 }
線性篩miu

杜教篩我顯然不會...

遇到超過1e8的miu,能夠嘗試O(sqrt(x))來求。

下面經過例題來加深理解。

[NOI2010]能量採集  [SDOI2008]儀仗隊

第一題

整除分塊 [HAOI2011]Problem b   [CQOI2007]餘數求和

相關文章
相關標籤/搜索