P3589 KUR 题解
Solution
因为 \(n\) 在 1e9 量级,所以答案是不可能一个个数的,考虑把答案的计数转化为若干条限制的求解.
我们考虑小串 \(a\) 在 \(c\) 中的出现的起始位置 \(x\),他一定满足 \(m\) 条限制,把他们列出来:
对于 \(c_{x+i}\),\(a(x+i)+b=ax+(ai+b)\),令 \(t=ai+b\),这是一个只与 \(i\) 相关的东西。于是在模 \(n\) 意义下,
若 \(a_i=0\),\(0 \le ax+t \le p-1\),即 \(-t \le ax \le p-t-1\),令 \(l=-t,r=p-t-1\);
若 \(a_i=1\),\(p \le ax+t \le n - 1\),即 \(p-t \le ax \le n -t-1\),令 \(l=p-t,r=-t-1\).
若 \(l \le r\),\(ax\in [l..r]\),否则 \(ax\in [0..r]\cup[l..n-1]\).
这样 \(ax\) 就有了 \(m\) 条限制,令他们的交为 \(S\),则 \(S\) 为 \(ax\) 的解集,又因为 \(a\) 与 \(n\) 互质,故 \(|S|\) 即为答案. 问题转化为了区间求交.
前一种可以直接求,后一种可以转化为补集的并的补集,于是做完了。
注意 \([n-m+1,n]\) 的 \(x\) 实际是不能取到的,需要在最后减去在其中的合法的 \(x\) 的数量.