對於數列 \(\\),定義 \(f\) 的 dirichlet 生成函式 \((\rm dgf)\) 為:
\[f(z)=\sum_^ \frac
\]不難發現 \((f\cdot g)(z)\) 為:
\[(f\cdot g)(z)=\sum_ \fracf_dg_}}
\]對於 dirichlet 卷積意義下的單位元 \(\epsilon\),其 dgf 為 \(\epsilon(z)=1\)
同時,我們定義的 \(i(n)=1\),其對應的 pgf 即為 \(\zeta(z)=\sum_^ \frac\),即 zeta 函式
\[(f\cdot g)(z)=\sum_ \fracf_dg_}}
\]等價於迪利克雷卷積逆。
\(f_1=1,f_^=1\)
\(\sum_f_df^_}=0\to f_n^=-\sum_ f_df^_}\)
可以在 \(\mathcal o(n\log n)\) 的時間複雜度解決。
例題:
dirichlet k 次根,即對於 \(g,k\) 計算 \(f^=g\)
要求乙個 \(\log\)(即倍增卷積無法通過)保證 \(g_1=1\)
\(n\le 10^6,k\le 10^9\),答案對 \(10^9+7\) 取模。
設 \(g=\ln f\),那麼 \(g'=\frac\)
於是\[g=\int f'\times f^
\]考慮求導:
\[\begin
&f(z)'=\bigg(\sum_n \frac\bigg)'
\\&=\sum_n f_n \bigg(\big(\frac\big)^z\bigg)'
\end\]
注意到 \((n^x)'=\exp(x\ln n)=n^x\ln n\)
於是有:
\[\begin
&f(z)'=\sum_n \frac\ln (\frac)
\\&f(z)'=-\sum_n \frac\ln n
\end\]
於是對於級數的變換即 \(f_n'=-f_n\ln n\)
問題來了,\(\ln n\) 在有理數域沒有定義。
不過我們知道最後會求一次積分,所以找乙個在求導意義下可以替換他的即可。
令 \(c(n)\) 表示 \(n\) 的質因子個數,那麼 \(c(nm)=c(n)+c(m)\)
這樣就可以解決 \(\ln\) 的問題了。
另一邊,我們考慮積分的問題,顯然積分即導數的逆運算,所以有 \(f_n'=-\frac\)
接下來考慮 \(\exp\) 了。
\(g=\exp(f)\to g'=gf'\)
於是有 \(g_n'=\sum_ g_df'_}\),故 \(-c(n)g_n=f_1c(1)\times g_n+\sum_ g_df_}'\)
即 \(g_n=-\frac\sum_ g_df_}'\)
對於 \(n=1\),\(g_1=1(f_1=1)\)
\(code:\)
#includeusing namespace std ;
#define next( i, x ) for( register int i = head[x]; i; i = e[i].next )
#define rep( i, s, t ) for( register int i = (s); i <= (t); ++ i )
#define drep( i, s, t ) for( register int i = (t); i >= (s); -- i )
#define re register
#define int long long
int gi()
while( cc >= '0' && cc <= '9' ) cn = cn * 10 + cc - '0', cc = getchar() ;
return cn * flus ;
}const int p = 998244353 ;
const int n = 1e6 + 5 ;
int n, k, f[n], g[n], ig[n], c[n], inv[n] ;
int top, isp[n], p[n / 10] ;
int fpow(int x, int k) return ans ;
}void init(int x)
} rep( i, 1, x ) inv[i] = fpow(c[i], p - 2) ;
}int h[n] ;
void fmul(int *a, int *b)
void fdev(int *a)
void fint(int *a)
void fexp(int *a) rep( i, 1, n ) a[i] = h[i], h[i] = 0 ;
}void fdiv(int *a) rep( i, 1, n ) a[i] = h[i], h[i] = 0 ;
}signed main()
狄利克雷生成函式
本篇討論的所有函式都是積性函式。若 f 為 dgf,則 f left s right 簡寫作 f 定義對於乙個數論函式,設在 i 處的點值為 f i 則定義它的狄利克雷生成函式 dgf dirichlet generating function 為 f left s right sum limits...
數論函式 狄利克雷卷積
開坑卷積 這裡說一下莫比烏斯函式的定義 定義兩個函式 f n g n 的狄利克雷卷積 為 f g n d nf d g nd 滿足交換律,結合律,分配律以及 f e f 都挺顯然的。這定義也是夠奇怪了,然後就可以搞很多事情 d n d n1 d 1 nd 1 1 n n d nid d 1 nd i...
狄利克雷卷積 狄利克雷卷積學習筆記
前置知識 1 常見的完全積性函式 恒等函式 i i n 1 單位函式 id id n n 元函式 epsilon epsilon n n 1 元函式卷積任何函式 f 都是 f 本身 2 常見積性函式 尤拉函式 varphi n 是小於n和n互質的自然數個數 莫比烏斯函式 mu n sigma sig...