Processing math: 100%

[SDOI2015]序列统计

题意:给定整数 x,求所有可以生成出的,且满足数列中所有数的乘积 mod m 的值等于 x 的不同的数列的有多少个。

解题方法:

设f[i][j],表示选了i个数,mod m等于j

暴力DP转移,O(nm2),GG

然后我们发现,没有必要一位一位转移,可以倍增转移,这样时间复杂度可以达Om2logn

这样依旧无法通过此题

我们观察DP式子 f[i2][j]=xymodm==jf[i][x]f[i][y]

如果将xy转换成a+b的话 我们可以通过FFT解决问题

想到对数函数,然后预处理出每个数在模m下的对数即可

时间复杂度为O(m logn logm)

posted @   niolle  阅读(110)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示