神仙zq发现了${n^2\sqrt n}\over 32$做法
Description
你有三个系数为0,1的多项式f(x),g(x),h(x)
求f(g(x)) mod h(x)
为方便起见,将答案多项式所有系数对2取模输出即可
如果f(x)=Sigma(Ak * X
k)
则f(g(x))=Sigma(Ak(g(x))
K
Input
一共三行,每行一个多项式,分别为f,g,h
对于一个多项式描述为n P0,P1...Pn其中Pi为0或1
多项式P(x)=P
0+P
1*x+....+P
n*x
n
记n表示多项式最高项的次数,n<=4000
Output
用同样的格式输出答案多项式
如果答案为0,输出0 0
题目分析
陈老师神题x1
观察到这里多项式的所有操作都是在系数$\mod 2$的意义下的,因此可以用bitset来加速多项式的一些操作。例如$O(n^2)$实现多项式取模。
1 void mod(poly &a, int pos) 2 { 3 for (int i=pos; i>=p; i--) 4 if (a[i]) a ^= c<<(i-p), a[i] = 0; //我第一次居然把标红地方给忘了 5 }
但是如同很多bitset的技巧题一样,非常重要的一点是bitset每次整体操作的复杂度是 $O(size)$ 的。