day2-命运石之门(卷积)

出题人题解:
对质数P,计算其原根为g。这样可以将ai写成g^bi的形式。于是乘法就变成了质数的加法,直接利 用FFT进行计算即可。需要注意的是要对ai = 0的情况特殊处理。

my answer:

原根的性质忘了,先跳过(qaq),总之可以[1,p-1]的ai全映射成了[1,p-1]的bi。

令f(x)为对于bx的答案,g(i)为数字i的个数,

可得卷积:f(x)=sum{ g(i)*g(x-i),i=0,1,2...x }

由卷积定理可得:f(x)=IDFT[  DFT(g(x))*DFT(g(x)) ]

p<=2e5,那么先用哈希表求出g(x),再对2e5个数做DFT,O(N)相乘后,再IDFT,得到f(x),在f(x)中寻找对应的答案即可,总复杂度就是DFT和IDFT的复杂度O(nlogn)

代码待补

原文地址:https://www.cnblogs.com/lnu161403214/p/9430436.html