[SDOI2015]序列统计
题意:给定整数 x,求所有可以生成出的,且满足数列中所有数的乘积 mod m 的值等于 x 的不同的数列的有多少个。
解题方法:
设f[i][j],表示选了i个数,mod m等于j
暴力DP转移,O(nm2),GG
然后我们发现,没有必要一位一位转移,可以倍增转移,这样时间复杂度可以达到O(m2logn)
这样依旧无法通过此题
我们观察DP式子 f[i∗2][j]=∑xymodm==jf[i][x]∗f[i][y]
如果将xy转换成a+b的话 我们可以通过FFT解决问题
想到对数函数,然后预处理出每个数在模m下的对数即可
时间复杂度为O(m logn logm)
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步