導入
機能を考慮して\(F(N)= \和\ limits_ {D | N} F(D)\) 、それは既知の関数と仮定される\(F.を\) 、多数の通過できません\(F(i)を\)取得するための加算と減算\(F(J)\)それ?発見は法律を見つけることのようだ、と使用しているようだ後、\(私は\)です\(J \)要因を。したがって、我々は、各因子に渡すことはできません\(F \)そう取得するには、0または1または-1することができた係数を乗じた\(F(J)\)それ?つまり、機能がある場合、我々は不思議であり、\(\ MU \)が可能\(F(N)= \ \ MU(D)F(\ dfrac {n}は{D})\ |和の\ limits_ {N D} )それは?私たちは、反転、このプロセスを呼び出す\(\ MUが\)メビウス関数です。
メビウス反転
仮定する反転式\ [F(N)= \和\ limits_ {D | N} F(D)\ xrightarrow [] { (n)を反転} F = \和 \ limits_ {D | N} \ミュー(D)F(\ dfrac { n}は{D})\] 設立は、
我々が起動できるかどうか\(\ MUを\)
\ [F(N)= \和\ limits_ | MU \ {D N}(D)F(\ dfrac {n}は{D})= \和\ limits_ |ミュー(D)\和\ {D N} \ limits_ {I | \ FRAC {n}は{D}} F(I)= \和\ limits_ {D | N} F(D)\和\ limits_ | MU \ {iが\ FRAC {n}は{D}}(私)\]
セットアップするように上記の式は、\ [\和\ limits_ {iが | \ FRAC {n}は{D}}ミュー(I)= [\ dfrac {n}は{D} == 1 \] \]
すなわち\ [\和の\ limits_ {I | MU \ n}(I)= [N == 1] \]
だから我々は、メビウス関数を定義します。
メビウス関数\(\ミュー\)に定義
\ [\和の\ limits_ |ミュー\ {I N}(I)= [N == 1] \]
自然のメビウス関数
[性质1] \(\ MU(D)= \開始{ケース} 1&D = 1 \\( - 1)^ K&D = P_1 * P_2 * ... * p_k \\ 0そうでなければ\端{ケース} \ )
証明:
このプロパティが真であると仮定し、その後、関数が定義可能にするために明莫比乌斯\ [\和\ limits_ {I | N}ミュー\(I)= [N == 1] \]
\(N \ = 1)どうやら。
\(N> 1 \)場合\(N- \)得られた品質係数の分解\(N-P_1 ^ = {P_2 Y_1} * ^ * ... *} {Y_2 P_K Y_K ^ {} \) 。超える素数の任意の数の\(1 \)は、特定の値は、メビウスの関数である場合\(0 \)無視することができます。私たちは、多くの素因数素因数指数がされている方法を検討する必要がある(1 \)を\します。したがって、上記の式をすることを低減することができる\ [\和\ limits_ {I = 0} ^ {K} C ^ {I} _ {K} *( - 1)^ iは\]
二項定理を使用して\を[\和\ limits_ {I = 0} ^ {K} \ binom {K} {I}( - 1)^ I1 ^ {KI} = [( - 1)+1] ^ K = 0 \]
[プロパティ2] \(\ MU \)関数乗法関数である:\(\ MU(M * N - )= \ MU(M)* \ MU(N-)\)\((M、N)= 1 \ )
証明:
设\(M = P_1 ^ {X_1} * P_2 ^ {X_2} * ... * p_k ^ {X_K} \)、 \(N = Q_1 ^ {Y_1} * Q_2 ^ {Y_2} * ... * q_t ^ {y_t} \)
则\(M×n個= P_1 ^ {X_1} * P_2 ^ {X_2} * ... * p_k ^ {X_K} * Q_1 ^ {Y_1} * Q_2 ^ {Y_2} * ... * q_t ^ {} y_t \)
場合\(\ミュー(M)= 0 または\ミュー(N)= 0 \ ) 、一定の存在\(Iは\)を満足\(X_I> 1 \)または\(Y_I> 1 \) 、そう\( \ミュー(M×n個)= 0 \)が確立され
場合(\ミュー(M)、\ \ミュー(N)\) 同じ数の場合、\(K、T \)は、同じパリティを有する、\(K +のT \)が偶数である、\(\ミュー(M *をN)= 1 \)設立
場合(\ミュー(M)、\ \ミュー(N)\) 反対符号、\(K、T \)異なるパリティを、\(K +のT \)は、したがって、奇数である\(\ミュー(M * N)= - 1 \)設立
メビウス関数を求めて
通常、オイラーの直交関数はメッシュ。複雑\(O(n)は、\)
inline void getMobius(){
mu[1] = 1; //μ函数的1是特殊情况
for(int i = 2; i <= 1e6; ++i){
if(!b[i]){
prime[++tot] = i;
mu[i] = -1; //质数的μ值一定为-1
}
for(int j = 1; j <= tot; ++j){
if(i * prime[j] > 1e6) break;
b[i * prime[j]] = 1;
if(i % prime[j] == 0){
mu[i * prime[j]] = 0;//i中已经包括了prime[j]
break;
}
else{
mu[i * prime[j]] = -mu[i];//不能整除,意味着i中原没有prime[j]这个素因子
}
}
}
}
メビウス反転式
定義によると、あります。
[式1]:\ [F.(N-)= \ SUM \ limits_ {D |} N-F(D)\ xrightarrow [] {反転} F(N)= \和 \ limits_ | MU \ {D N}( D)F(\ {N} dfrac {D})\]
[式2]:[F(N-)= \ SUM \ \ {N-limits_ | D} F(D)\ xrightarrow [] {反転} F(N)= \和 \ limits_ {N | D}ミュー(\ \ dfrac {D} {N} )F(D)\]
##が発行
求\ [\和\ limits_ {i = 1} ^ {A} \和\ limits_ {J = 1} ^ {B} [GCD(i、j)は== K] \]
ソリューション:
设\ [F(X)= \和\ limits_ {i = 1} ^ {A} \和\ limits_ {J = 1} ^ {B} [GCD(I、J)== X] \]
明らかに\(F(k)は、\)の答えです。
構成\ [F(X)= \和\ limits_ {X | D} F(D)\]
有\ [F(X)= \和\ limits_ {X | D} \和\ limits_ {i = 1} ^ {A} \和\ limits_ {J = 1} ^ {B} [GCD(i、j)は== D] \] \ [= \和\ limits_ {i = 1} ^ {A} \和\ limits_ {J = 1} ^ {B} [X | GCD(I、J)] \]
反転によって得られる\ [F(X)= \和\ limits_ | MU \ {X D}(\ dfrac {D} {X})F(D)\]
答えは\ [F(K)= \和\ limits_ {K | D}ミュー(\ \ dfrac {D} {K})F(K)\]
考えてみましょう\(F(x)は\)の意味、すべてのペアの数です\(X \)倍数の数。放出ができ\(F(X)= \左\ lfloor \ dfrac {A} {X} \右\ rfloor \ CDOT \左\ lfloor \ dfrac {B} {X} \右\ rfloor \)
由此\ [F(K)= \和\ limits_ | \ lfloor \ dfrac {A}、{K} \右\ rfloor \ CDOT \左MU \ {K D}(\はdfrac {D} {K})\左\ lfloorの\のdfrac {B}、{K} \右\ rfloor \] MU(I)\ \ [F(K)= \和\ limits_ {I} \左\ lfloor \ dfrac {A}、{K} \右\ rfloor \ CDOT \左\ lfloor \ dfrac {B}、{K} \右\ rfloor \]
割り切れるいわゆるブロックは、方法を使用することである\(O(\ SQRT {N })\) 複雑さを取得[\和の\ limits_ {I \ = 1} ^ {N} \ \ lfloor \ dfrac左{N} {i}は\右 \ rfloor \] 我々は、いつことが見出さ(Iは\)\近く、多くの重複する値が存在してもよいです。割り切れるブロックは、すべての重複した値で一目置かれるべきであると思いました。
これは、合計以下で証明することができない\(2 \ SQRT {N} \) 番目の値。それは価値を証明することができます\を(私は\)最後の分母である\(N \) / \((N \) / \(I)\) 。各セグメントの期間を取ることだけが必要であり、ポインタが次のセクションにジャンプします
メビウスの反転を振り返ります。我々は、このような反転式の形に来る場合\ [F(N)= \和の\ limits_ {N | D} ^ {MIN(A、B)}ミュー(\ dfrac {D} {N})\ \ {A \ lfloor \ dfracを左 、右の\ rfloor \} {N} * \ \]右の\ rfloor \ \ lfloor \ dfrac {B} {N}を左式で割り切れる二つの分割ブロックを使用する方法があります最適化?
そして、まだ思考の単一割り切れるを使用。各ブロックは必要\を(\左\ lfloor \ dfrac {A} {N} \右\ rfloor \) と\(\左\ lfloor \ dfrac {B} {N} \右\ rfloor \) と同じです。同じ値の両方を満たすようにそうするたびに、私たちは、別のセクションの先頭にジャンプする必要があります
唯一の問題は今に対処することです\(\ミュー\) A、\(\ミュー\)それがメソッドによって達成することができる場合、値は、連続していない\(\ミュー\)することができます、接頭辞と同様のものに直接計算。
恒等変換式。オーダー\(K = \ dfrac {D} {N-} \):\ [\ SUM \のlimits_ {N- | D} \ MU(K)\左\ lfloor \ dfrac {A} {NK} \右\ rfloor * \ \ lfloorを左\ dfrac {B} {NK} \右\ rfloor \] 実際\(K \)ことを意味する\(D \)の\(N- \)を数回、それによって必要列挙排除\を(D \) 、直接列挙(K \)\の範囲内の缶、\)\(NK \のLeq MIN(A、B) 。したいと思うかもしれ\(Aを、B \)に追加されるもので、\(\ N-) 。その\(A '= \ dfrac {A} {N-}、B' = \ dfrac {B} {N-} \):\ [\ SUM \のlimits_ {K = 1である。} \ MU(K)\ \ lfloor \左dfrac {A '} {K} \右\ rfloor * \左\ lfloor \ dfrac {B'} {K} \右\ rfloor \]
この時点で、\(\ MU \)が同期され、スタイルに加えて、されています。したがって、前処理の必要のみ\を(\ミュー\)プレフィックスと缶