关于题解中多项式开任意次方做法的一些问题
查看原帖
关于题解中多项式开任意次方做法的一些问题
122520
望月Asta楼主2022/1/11 22:12

这篇题解 中提到可以用 G(x)F(x)k(mod998244353)G(x) \equiv \sqrt[k]{F(x)} \pmod{998244353} 转化为 G(x)exp(k1lnF(x))(mod998244353)G(x) \equiv \exp (k^{-1} \ln F(x)) \pmod{998244353} 的做法,利用模数原根为 33 使用 BSGS 求出 F(0)F(0)kk 次剩余.

这种想法是正确的,但是上文提到的那篇题解没有正确指出对于 F(0)3x(mod998244353)F(0) \equiv 3^x \pmod{998244353} 仅当 xkmod998244352\dfrac{x}{k} \bmod{998244352} 存在时才有 kk 次剩余,且代码实现也是错误的,无法通过 loj 上的多项式开三次根.

实际实现需要在 BSGS 后先特判 kk 是否能整除 xx 然后用 exgcd 求出 kk 在模 998244352998244352 意义下的逆元,再求出 3xk13^{xk^{-1}} 作为 kk 次剩余.

另一篇题解 也用了同样的方式,但是实现是正确的.

2022/1/11 22:12
加载中...