タイトル
与えられた\(p、k \)、\(T \)クエリ、与えられた\(n \)が要求されるたびに、\(\ sum \ limits_ {i = 1} ^ ni ^ k(\%〜p )\)。(\(2 \ le n、m、k \ le 10 ^ {18}、1 \ le T \ le 3 * 10 ^ 3 \)、\(p \)の最大素因数は\(3 * 10 ^ 5を超えない\))
練習
\(p \)最大素因数は\(3 * 10 ^ 5 \)を超えず、直接総当たり分解\(p = \ prod p_i ^ {a_i} \)
\(p_i ^ {a_i} \)だけを考えます。この\(i \)は、重複する名前に関係なく簡単に区別できるため、次のものとは異なります。
\ [\ begin {aligned} \\ \ sum \ limits_ {i = 1} ^ nj ^ k&= \ sum \ limits_ {i = 1} ^ n(ap_i + b)^ k \\&= \ sum \ limits_ { i = 1} ^ n \ sum \ limits_ {j = 0} ^ {min(k、a_i)} {k \ choose j}(ap_i)^ jb ^ {kj} \\&= \ sum \ limits_ {j = 0} ^ {min(k、a_i)} {k \ choose j} p ^ j \ sum \ limits_ {i = 1} ^ na ^ jb ^ {kj} \\&= \ sum \ limits_ {j = 0} ^ {min(k、a_i)} {k \ choose j} p ^ j(\ sum \ limits_ {a = 0} ^ {\ frac {n} {p_i} -1} a ^ j \ sum \ limits_ {b = 0} ^ {p_i-1} b ^ {kj} +(\ frac {n} {p_i})^ {j} \ sum \ limits_ {b = 0} ^ {n \%p_i} b ^ {kj} )\\ \ end {aligned} \]