题解
显然考虑生成函数,设答案的生成函数为 F(x) ,那么:
F(x)=x+∑i∈SF(x)iF(x)−∑i∈SF(x)i=x
显然想到拉格朗日反演,构造函数 G(x)=x−∑i∈Sxi ,那么有:
[xn]F(x)=1n[xn−1](xG(x))n
这并不能做,因为不保证 n 在模 M 意义下有逆。
然后考虑 EI 在今年 WC2021 提出的另类拉格朗日反演,有:
[xn]F(x)=[xn−1]G′(x)(xG(x))n+1
这样我们就成功规避了除法,现在问题转化为求一个多项式的高阶幂的问题。
接下来我们仅考虑模数是质数或质数次幂的情况,因为更一般的情况可以直接 CRT 求得。
设该质数为 p 。
先考虑模 p 。
根据历年的一些经典题目,我们可以得到多项式高阶幂模质数的一个重要性质:
F(x)p≡F(xp)(modp)
证明即考虑多项式系数 (pa1,…,am) ,其模 p 不为 0 当且仅当 a1=p ,此时值为 1 ,证毕。
那么我们可以考虑设计一个算法,每次将规模 /p ,就可以解决这个问题。
具体而言,考虑计算 [xm]A(x)B(x)n,令 m=pm1+rm,n=pn1+rn,然后我们进行一些推导:
[xm]A(x)B(x)n≡[xpm1+rm]A(x)B(x)pn1+rn≡[xpm1+rm](A(x)B(x)rn)B(x)pn1(modp)
令 A(x)B(x)rn=∑p−1r=0xrCr(xp) ,那么:
[xpm1+rm](A(x)B(x)rn)B(x)pn1≡[xpm1+rm]xrmCrm(xp)B(x)pn1≡[xpm1]Crm(xp)B(xp)n1≡[xm1]Crm(x)B(x)n1(modp)
这样我们就可以递归了,预处理出所有 Br ,令 A,B 的项数为 k,那么复杂度是 O((kp)2+Tk2logpn) 。
接下来考虑模 pu 。
根据上方的讨论,我们自然希望多项式高阶幂模 pu 也有类似性质。
事实上对 pu (u∈Z+) ,我们都有:
F(x)pu≡F(xp)pu−1(modpu)
考虑归纳证明,u=1 由上可知成立,对于 u>1 ,设 F(x)pu=F(xp)pu−1+puG(x) ,那么:
F(x)pu+1=(F(xp)pu−1+puG(x))p=p∑i=0(pi)F(xp)ipu−1p(p−i)uG(x)p−i≡F(xp)pu(modpu+1)
最后一步转化与上面类似,那么即得原命题成立。
这样我们令 A0(x)=A(x)B(x)nmodpu−1,B0(x)=B(x)pu−1,n′=[n/pu−1] ,就可以直接套用原来的方法计算了,复杂度 O((puk)2+T(pu−1k)2logpn) 。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧