我々は最初の式を知っている必要があります。$ \ムー(LCM(I 、J))= \ミュー(I)\ CDOT \ムー(J)\ CDOT \ムー(GCD(i、j)は)$( minが0の議論であるが)
ため$ D = GCD(I、J)$、$ N - '= \ lfloor N- / D \ rfloor $、$ M' = \ lfloor M / D \ rfloor $
$ \ SUM \ MU(LCM(I、J) )$
$ = \ sum_ {D = 1} ^ {N-} \ MU(D)\ sum_ {I = 1} ^ {N- '} \ MU(ID)\ sum_ {J = 1} ^ {M'} \ MU(JD)\ sum_ {Gミュー(G)\ | | I、G、J} $の
順序$ N '' = \ lfloor N '/ G \ rfloor $、$ M' '= \ lfloor M' / G \ rfloor $
$ = \ sum_ {D = 1} ^ {N-} MU(D)\ sum_ {G = 1} ^ {N- '} \ \ MU(G)\ sum_ {I = 1} ^ {N-'「} \ MU(IGD)\ sum_ {J = 1} ^ {M '}ミュー(JGD)の$ \
順序$ T = Gdの$
$ = \ sum_ {T = 1} ^ {N-} \ MU * \ MU(T) \ sum_ {i = 1} ^ {N ''}ミュー\(IT)\ sum_ {J = 1} ^ {M '}ミュー(JT)$ \
$の\のMU * \ミュー$、後者でありますそれはで、前処理の複雑さ$ O(nlnn)$、暴力的な尋問列挙トン、複雑$ 0(TN)$前処理することができます
1つの#include <ビット/ STDC ++ H> 2 使用して 名前空間STDを、 3 の#define N 1000005 4 int型VIS T、N、M、μ[N]、[N]、P [N]、MU2 [N]。 5ベクター< INT > MU3 [N]。 6つの 長い 長いANS。 7 INT GCD(int型のx、int型Y){ 8 であれば(!y)の戻りX。 9 戻り GCD(Y、Xの%のY)。 10 } 11 INT メイン(){ 12 MU [ 1 ] = 1; 13 のために(int型 I = 2 ; iがN- < 4 ; iが++ ){ 14 であれば(!VIS [I]){ 15 P [++のp [ 0 ] = I。 16の ミュー[I] = - 1 。 17 } 18 のために(INT J = 1 ;(j <= P [ 0 ])&&(iは* P [j]が<N- 4); J ++ ){ 19 VIS [iがPを* [J] = 1 。 20 であれば(私の%のP [j] == 0 ){ 21 ミュー[i *はp個の[jを]] = 0 ; 22 ブレーク; 23 } 24 - MU = [Iは、p [jを] *] ; MU [I]を 25 } 26 } 27 のための(int型 i = 1 ; iがN- < 4 ; I ++ ) 28 のための(INT J = 1 ; J <=(N- 5)/ I; J ++)MU2 [iがjは*] + = MU [I] * ミュー[J]。 29 のためには、(int型 i = 1 ; iはN- < 4 ; iは++ ){ 30 MU3を[I] .push_back(MU [I])。 31 のための(int型、J = 2、J <=(N- 5)/ I; J ++)MU3 [I] .push_back(MU3 [i]は[J- 2 ] + MU [i *がJ])。 32 } 33 のscanf(" %dの"、&T)。 34 一方(t-- ){ 35 のscanf(" %D%dの"、&N、&M)。 36の ANS = 0 。 37 であれば(N> M)スワップ(N、M)。 38 のために(int型 i = 1 ; iが<= N; iが++)ANS + = 1LL * MU2 [I] * MU3 [I] [N / I- 1] * MU3 [I] [M / I- 1 ]。 39 のprintf(" %LLDする\ n " 、ANS)。 40 } 41 }