今天写了一下之前想的
https://judge.yosupo.jp/problem/convolution_mod_large
一些不重要的技术细节在此略去。
简而言之 其中有一步需要求一个 4x4 矩阵的逆。
好吧,我们想,这没什么。
我们找了一个矩阵求逆的板子,但是我们的输入因为蒙哥马利约减的原因表示起来比较抽象。
于是我们手算了一下这个 4x4 的矩阵,然后放进去求逆。
具体来说,我们要求逆的这个矩阵中只有 7 种本质不同的元素,而且都是同一个数的不同幂次。
我们用常量表达式函数可以直接显示其值的方法手动抄了一遍。
最后发现结果出现了问题。
我们一步一步的跟踪,由于蒙哥马利约减表示之后不够直观,以及最开始花了一段时间质疑做法正确性,以及一个无关紧要的小错误。
我们花了2个小时发现我们有个数抄错了。
285691217 <-> 289156217
我们一开始对的时候还没有发现这个数抄错了。
后来发现算出来结果不对。
然后一步步折腾发现这里寄了。
物胜于心。
下次这种情况无论如何我们会让它转换输出而不是手抄。
关于这个做法
实际上是求了 2 ^ 25 个点值 以及对这个做逆变换
分别是 998244353 的 2^23 个 2^23 次单位根, 这些单位根的 g 倍, g ^ 2 倍 和 g ^ 3 倍。
然后这个东西是可以矩阵表示的。
我逆变换的时候直接考虑的机械反转,所以需要矩阵求逆。
总共12次长度为2^23的ntt
cf博客哥的做法不评价,我不懂。
其他做法是15次ntt,感觉我的做法还是有点进步的!
标签:求逆,23,矩阵,物胜于,做法,我们 From: https://www.cnblogs.com/QedDust/p/17619146.html