博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【模板】多项式开方
阅读量:4672 次
发布时间:2019-06-09

本文共 1424 字,大约阅读时间需要 4 分钟。

蒟蒻写题解实在不易

前置芝士

推式

推式中如有不理解的地方在多项式求逆的题解中均有详细说明

\(B(x)\),使得\(B(x)^2\equiv A(x)(mod x^n)\)

\[\begin{aligned}\\ B(x)^2\equiv A(x)(mod x^n),B(x)^2&\equiv A(x)(mod x^{\lceil\frac{n}{2}\rceil})\\ B(x)'^2&\equiv A(x)(mod x^{\lceil\frac{n}{2}\rceil})\\ B(x)^2-B'(x)^2&\equiv 0(mod x^{\lceil\frac{n}{2}\rceil})\\ B(x)^4+B'(x)^4-2B(x)^2B'(x)^2&\equiv 0(mod x^{\frac{n}{2}})\\ (B(x)^2+B'(x)^2)^2&\equiv (2B(x)B'(x))^2(mod x^{\frac{n}{2}})\\ B(x)^2+B'(x)^2&\equiv 2B(x)B'(x) (mod x^{\frac{n}{2}})\\ A(x)+B'(x)^2&\equiv 2B(x)B'(x)(mod x^{\frac{n}{2}})\\ B(x)&\equiv \frac{A(x)+B'(x)^2}{2B'(x)}(mod x^{\frac{n}{2}})\\ \end{aligned}\]

边界:\(n=1\longrightarrow (mod x)\),则仅剩常数项,\(B_0=\sqrt{A_0}\)

至此,我们得到的最终的式子,仅需求逆就能实现开方了

code

细节:由于期间在求逆与开方间反复调换,要注意模的次数

#include
typedef long long LL;const LL maxn=1e6+9,mod=998244353,g=3;inline LL Read(){ LL x(0),f(1);char c=getchar(); while(c<'0' || c>'9'){ if(c=='-') f=-1; c=getchar(); } while(c>='0' && c<='9'){ x=(x<<3)+(x<<1)+c-'0'; c=getchar(); } return x*f;}inline LL Pow(LL base,LL b){ LL ret(1); while(b){ if(b&1) ret=ret*base%mod; base=base*base%mod; b>>=1; }return ret;}LL r[maxn];inline void NTT(LL *a,LL n,LL type){ for(LL i=0;i
>1]>>1)|((i&1)<
>1,A,B); for(LL i=0;i
>1,A,B); LL n(deg+1>>1); for(LL i=0;i

转载于:https://www.cnblogs.com/y2823774827y/p/10691668.html

你可能感兴趣的文章
反射,得到Type引用的三种方式
查看>>
pl sql练习(2)
查看>>
Problem B: 判断回文字符串
查看>>
谷歌浏览器,添加默认搜索引擎的搜索地址
查看>>
数据结构化与保存
查看>>
C# .net 获取程序运行的路径的几种方法
查看>>
为什么需要Docker?
查看>>
国内5家云服务厂商 HTTPS 安全性测试横向对比
查看>>
how to control project
查看>>
转 python新手容易犯的6个错误
查看>>
第四节 -- 列表
查看>>
Python入门学习笔记4:他人的博客及他人的学习思路
查看>>
webstorm里直接调用命令行
查看>>
关联规则算法之FP growth算法
查看>>
对数组序列进行洗牌
查看>>
决策树
查看>>
团队作业
查看>>
如何避免在简单业务逻辑上面的细节上面出错
查看>>
win7,Ubuntu 12.04 双系统修改启动项顺序三方法
查看>>
python--列表推导式和生成表达式
查看>>