[GDKOI2016] 小学生数学题

Description

ni=11imodpk

Constraint

p105
pkn1018

Analysis

首先,给出一条性质

aacb(modp)bc(modpc)

具体证明非常简单,只要考虑到

aac=kp+b=k(pc)+(bc)

那用处就是

amodp=bacmodpc=bc=(amodp)c

那这道题我们借鉴计算阶乘时的思想,提取出 p 整除的数。

Solve(n,k)=i=1n1imodpk=1pi=1np1i+0<a<pa+bpn1a+bpmodpk

然后我们分开考虑这两部分,先考虑第一部分,利用上性质(1)(2),可以得到

1pi=1np1imodpk=1pi=1np1imodpk=(1ipmodpk)pp=(p(1ipmodpk))1p=(1imodpk+1)1p=Solve(np,k+1)1p

递归求解即可,现在考虑第二部分

0<a<pa+bpn1a+bp=a=1p1b=0nap1a+bp=a=1p1b=0nap11+bpa1a=a=1p11ab=0nap11(bpa)=a=1p11ab=0napi=0(bpa)i=a=1p11ab=0napi=0(pa)ibi=a=1p11ai=0k1(pa)ib=0napbi

这里就是自然数幂求和,用 [2k×2k] 的矩阵,
一次求出所有 i Si

时间复杂度: T(n,k)=T(np,k+1)+k3+kp=(k3+kp)lognp

你可能感兴趣的:(Maths)