多项式基本操作

本文介绍了多项式的基本运算,包括求逆、求ln、牛顿迭代和指数运算,以及利用分治算法进行快速傅里叶变换(FFT/NTT)。还探讨了斯特林数、贝尔数和划分数的计算,并提出了一些优化技巧,如EulerTransform和自然数幂和的计算方法。
摘要由CSDN通过智能技术生成

多项式求逆

给定一个 \(n-1\) 次的多项式 \(A(x)(a_0 \neq 0)\) ,要求一个多项式 \(F(x)\) 满足 \(F(x)A(x) \equiv 1 \pmod x^n\)
假设求出了 \(F_0(x)\) 满足 \(F_0(x)A(x) \equiv 1 \pmod{x^{\lceil \frac{n}{2} \rceil}}\) ,那么有

\[\begin{aligned} F_0(x)A(x) \equiv F(x)A(x) \equiv 1 \pmod{x^{\lceil \frac{n}{2} \rceil}} \\A(x)(F(x)-F_0(x)) \equiv 0 \pmod{x^{\lceil \frac{n}{2} \rceil}} \end{aligned} \]

由于 \(A(x) \neq 0\) ,所以

\[\begin{aligned} F(x)-F_0(x) \equiv 0 \pmod{x^{\lceil \frac{n}{2} \rceil}} \\(F(x)-F_0(x))^2 \equiv 0 \pmod{x^n} \\F^2(x)-2F(x)F_0(x)+F_0^2(x) \equiv 0 \pmod{x^n} \end{aligned} \]

又因为 \(F(x)A(x) \equiv 1 \pmod{x^n}\) ,两边都乘个 \(A(x)\)

\[F(x) \equiv 2F_0(x)-A(x)F_0^2(x) \pmod{x^n} \\ \equiv F_0(x)(2-A(x)F_0(x)) \pmod{x^n} \]

所以我们可以递归求解,时间复杂度 \(T(n) = T(n/2)+n\log n = n\log n\)

void get_inv(int *a, int *f, int n){
	if(n == 1)return f[0] = fpow(a[0], mod-2), void();
	get_inv(a, f, n+1>>1), init(2*n-1);//init()处理数组长度和蝴蝶变换
	fp(i, 0, n-1)inv_ary[i] = a[i];
	ntt(f, 0), ntt(inv_ary, 0);
	fp(i, 0, lim-1)f[i] = 1ll*f[i]*(2-1ll*f[i]*inv_ary[i]%mod+mod)%mod;
	ntt(f, 1);
	fp(i, n, lim-1)f[i] = 0;
	fp(i, 0, lim-1)inv_ary[i] = 0;
}

多项式求 \(\rm{ln}\)

给定一个 \(n-1\) 次的多项式 \(A(x)(a_0 = 1)\) ,要求一个多项式 \(F(x)\) 满足 \(F(x) \equiv \ln A(x) \pmod{x^n}\)
两边求个导得到:

\[F'(x) \equiv \frac{A'(x)}{A(x)} \pmod{x^n} \]

所以只需要对 \(A(x)\) 求个导和逆就能求出 \(F'(x)\) 了。最后再对 \(F'(x)\) 求个积分,由于 \(a_0=1\) ,所以常数项为 \(0\) 。时间复杂度为 \(\mathcal{O} (n\log n)\)

void get_ln(int *a, int *f, int n){
	get_inv(a, ln_ary, n), init(2*n-2);
	fp(i, 1, n-1)f[i-1] = 1ll*a[i]*i%mod;
	ntt(f, 0), ntt(ln_ary, 0);
	fp(i, 0, lim-1)f[i] = 1ll*f[i]*ln_ary[i]%mod;
	ntt(f, 1);
	fp(i, n-1, lim)f[i] = 0;
	fp(i, 0, lim)ln_ary[i] = 0;
	fb(i, n-1, 1)f[i] = 1ll*f[i-1]*inv[i]%mod;
	f[0] = 0;
}

牛顿迭代

给定一个函数 \(G(x)\) ,要求一个多项式 \(F(x)\) 满足 \(G(F(x)) \equiv 0 \pmod{x^n}\)
假设求出了 \(F_0(x)\) 满足 \(G(F_0(x)) \equiv 0 \pmod{x^{\lceil \frac{n}{2}\rceil}}\) ,那么把 \(G(x)\)\(F_0(x)\) 处泰勒展开可以得到:

\[G(F(x)) \equiv G(F_0(x))+G'(F_0(x))(F(x)-F_0(x))+\frac{G''(F_0(x))}{2}(F(x)-F_0(x))^2+\cdots \pmod{x^n} \\ \equiv G(F_0(x))+G'(F_0(x))(F(x)-F_0(x)) \equiv 0 \pmod{x^n} \\ F(x) \equiv F_0(x)-\frac{G(F_0(x)}{G'(F_0(x))} \pmod{x^n} \]

因为 \(F(x)-F_0(x)\) 最低次是 \(x^{\lceil \frac{n}{2}\rceil}\) ,所以从第三项开始模 \(x^n\) 就为 \(0\) 了。 注意这里的求导是求 \(F_0(x)\) 的偏导 。然后就可以递归计算了。


多项式 \(\rm{exp}\)

给定一个 \(n-1\) 次多项式 \(A(x)(a_0=0)\) ,要求一个多项式 \(F(x)\) 满足 \(F(x) \equiv e^{A(x)} \pmod{x^n}\)
两边求个 \(\ln

基于SSM框架的智能家政保洁预约系统,是一个旨在提高家政保洁服务预约效率和管理水平的平台。该系统通过集成现代信息技术,为家政公司、家政服务人员和消费者提供了一个便捷的在线预约和管理系统。 系统的主要功能包括: 1. **用户管理**:允许消费者注册、登录,并管理他们的个人资料和预约历史。 2. **家政人员管理**:家政服务人员可以注册并更新自己的个人信息、服务类别和服务时间。 3. **服务预约**:消费者可以浏览不同的家政服务选项,选择合适的服务人员,并在线预约服务。 4. **订单管理**:系统支持订单的创建、跟踪和管理,包括订单的确认、完成和评价。 5. **评价系统**:消费者可以在家政服务完成后对服务进行评价,帮助提高服务质量和透明度。 6. **后台管理**:管理员可以管理用户、家政人员信息、服务类别、预约订单以及处理用户反馈。 系统采用Java语言开发,使用MySQL据库进行据存储,通过B/S架构实现用户与服务的在线交互。系统设计考虑了不同用户角色的需求,包括管理员、家政服务人员和普通用户,每个角色都有相应的权限和功能。此外,系统还采用了软件组件化、精化体系结构、分离逻辑和据等方法,以便于未来的系统升级和维护。 智能家政保洁预约系统通过提供一个集中的平台,不仅方便了消费者的预约和管理,也为家政服务人员提供了一个展示和推广自己服务的机会。同时,系统的后台管理功能为家政公司提供了强大的据支持和决策辅助,有助于提高服务质量和管理效率。该系统的设计与实现,标志着家政保洁服务向现代化和网络化的转型,为管理决策和控制提供保障,是行业发展中的重要里程碑。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值