SQRTの\順序$ M = \ lfloor [3] {N-} \ rfloor-。1 $
$ \ sum_ {I = 1} ^ {N-} GCD(床(\のSQRT [3] {I})、I)$
= $ \ sum_ {i = 1} ^ {M} \和\ limits_ {J = ^ {3}} ^ {(I + 1)^ {3} -1} GCD(I、J)+ \和\ limits_ { I =(M + 1)^ {3}} ^ {n}はGCD(M + 1、i)は$
式の接頭辞を考慮し、すなわち、
$ \ sum_ {I = 1} ^ {n}はGCD(M、I )$(式Mと無関係Nと前回)
= $ \ sum_ {D | M} D \ sum_ {I = 1} ^ {N / D} \ varepsilon(GCD(I、M / D)) $
= $ \ sum_ {T | M} \ MU(T)\ sum_ {DT | M}のn / dtが\ CDOT D $
= $ \ sum_ {T | M}のn / T \ sum_ {D | T} D \ CDOT \ MU(T / D)$
= $ \ sum_ {T | N-M} / T \ CDOT \ varphi $(T)
$ \ varphi $線形ふるいの、元の式の後半はO(M)を用いることができ、検討前半
= $ \ sum_ {i = 1 } ^ {M} \ sum_ {T | I} \ varphi(T)の\ CDOT(((I + 1)^ {3} -1)/ T-(I ^ 3 -1)/ T)$
= $ \ sum_。1 = {T mを} ^ {} \ varphi(T)\ sum_ {I ^ = {M} 1 / T}((+イット1)^ {-1}。3 )/ T-(IT ^ 3-1)/ T $
= $ \ sum_。1 = {T mを} ^ {} \ varphi(T)\ sum_ {I}。1 ^ = {M / 3Ti T} ^ {2} + 3I + 1 $
これもoをすることができる(M)を算出する(後者は、式を設定することができ、シグマを前処理することができる)、即ち、O(M)の総時間の複雑
1つの#include <ビット/ STDC ++ H> 2 使用して 名前空間STDを、 3 の#define N 10000005 4 の#define MOD 998244353 5 の#define LL __int128 6 int型のT、M、ANS、S1 [N]、S2 [N]、VIS PHI [N]、[N]、P [N]。 7 チャー S [ 101 ]。 8 INT メイン(){ 9つの s1は、[ 1 ] = 3 ; 10の S2 [ 1 ] = 4 。 11の PHI [ 1 ] = 1 。 12 のために(int型、I = 2 iがN- <; 4 ; iは++ ){ 13 、S1 [I] =(S1 [I- 1 ] + 3LL * iは* I)%MOD。 14の S2 [i]は=(S2 [I- 1 ] + 3LL * I + 1)%MOD。 15 であれば(!{VIS [i])と 16 P [++のp [ 0 ] = I。 17 PHI [i]は= I- 1 。 18 } 19 のために(INT J = 1 ;(j <= P [ 0 ])&&(iは* P [j]が<N- 4); J ++ ){ 20 VIS [i *はp個の[jを]] = 1 ; 21 もし(I%のP [J])PHI = PHI [I] * [iがP [J] *](P [j]を- 1 )。 22 他{ 23 PHI [i]は* = PHI [iがj]を[Pを*] P [J]。 24 ブレーク; 25 } 26 } 27 } 28 のscanf(" %dの"、&T)。 29 一方(T-- ){ 30 のscanf(" %sの" 、S); 31 LL N = 0 。 32 のための(int型 I = 0、S [i]は、iが++)N = N * 10 +(S [I] - ' 0 ' )。 33 のための(M = 1 ;(LL)のm×m個×m個<= nであり; m ++ )。 34 M- = 2 。 35 INT ANS = 0 。 36 のために(int型 I = 1 ; I <= M + 1 ; iが++ ) 37 場合((M + 1)%I == 0((LL)(M + - )ANS =(ANS +(N / I 1)*(M + 1)*(M + 1) - 1)/ I)%のMOD * PHI [i])と%モッズ; 38 のために(int型 I = 1を ANS%=([i]は*(1LL * iはS1 [M / I] + S2 [M / I] + MOD)を* ANS + 1LLの*のファイ)iが++; I <= M)モッズ; 39 のprintf(" %d個の\ n " 、ANS)。 40 } 41 }