[洛谷P4238]【模板】多项式求逆
题目大意:多项式求逆
题解:$ A^{-1}(x) = (2 - B(x) * A(x)) \times B(x) \pmod{x^n} $ ($B(x)$ 为$A(x)$在$x^{\lceil \dfrac{n}{2} \rceil}$下的逆元)
卡点:无
C++ Code:
#include <cstdio>
#define int long long
#define maxn 262144
using namespace std;
const int mod = 998244353;
const int P = 3, invP = (mod + 1) / P;
int n, l, dig;
int a[maxn], b[maxn], tmp[maxn], rev[maxn];
int pw(int base, int p) {
int ans = 1;
for (p <<= 1; p >>= 1; base = (base * base) % mod) if (p & 1) ans = (ans * base) % mod;
return ans;
}
int inv(int x) {
return pw(x, mod - 2);
}
void swap(int &a, int &b) {a ^= b ^= a ^= b;}
void NTT(int *a, int op) {
int Yx;
if (op == 1) Yx = P; else Yx = invP;
for (int i = 0; i < l; i++) if (i < rev[i]) swap(a[i], a[rev[i]]);
for (int mid = 1; mid < l; mid <<= 1) {
int Wn = pw(Yx, (mod - 1) / (mid << 1));
for (int i = 0; i < l; i += mid << 1) {
int W = 1;
for (int j = 0; j < mid; j++, W = W * Wn % mod) {
int X = a[i + j], Y = W * a[i + j + mid] % mod;
a[i + j] = (X + Y) % mod;
a[i + j + mid] = (X - Y + mod) % mod;
}
}
}
if (op == -1) {
int invl = inv(l);
for (int i = 0; i < l; i++) a[i] = a[i] * invl % mod;
}
}
void INV(int *a, int *b, int n) {
if (n == 1) {b[0] = inv(a[0]); return ;}
INV(a, b, n + 1 >> 1);
l = 1; dig = 0; while (l < n << 1) l <<= 1, dig++;
rev[0] = 0; for (int i = 1; i < l; i++) rev[i] = (rev[i >> 1] >> 1) | ((i & 1) << (dig - 1));
for (int i = 0; i < n; i++) tmp[i] = a[i];
for (int i = n; i < l; i++) tmp[i] = 0;
NTT(b, 1); NTT(tmp, 1);
for (int i = 0; i < l; i++)
b[i] = (2 - tmp[i] * b[i] % mod + mod) % mod * b[i] % mod;
NTT(b, -1);
for (int i = n; i < l; i++) b[i] = 0;
}
signed main() {
scanf("%lld", &n);
for (int i = 0; i < n; i++) scanf("%lld", &a[i]), a[i] %= mod;
INV(a, b, n);
for (int i = 0; i < n; i++) printf("%lld ", b[i]);
return 0;
}
[洛谷P4238]【模板】多项式求逆的更多相关文章
- 洛谷 P4238 [模板] 多项式求逆
题目:https://www.luogu.org/problemnew/show/P4238 看博客:https://www.cnblogs.com/xiefengze1/p/9107752.html ...
- 多项式求逆元详解+模板 【洛谷P4238】多项式求逆
概述 多项式求逆元是一个非常重要的知识点,许多多项式操作都需要用到该算法,包括多项式取模,除法,开跟,求ln,求exp,快速幂.用快速傅里叶变换和倍增法可以在$O(n log n)$的时间复杂度下求出 ...
- 洛谷.4238.[模板]多项式求逆(NTT)
题目链接 设多项式\(f(x)\)在模\(x^n\)下的逆元为\(g(x)\) \[f(x)g(x)\equiv 1\ (mod\ x^n)\] \[f(x)g(x)-1\equiv 0\ (mod\ ...
- 【洛谷4238】 多项式求逆(NTT,分治)
前言 多项式求逆还是爽的一批 Solution 考虑分治求解这个问题. 直接每一次NTT一下就好了. 代码实现 #include<stdio.h> #include<stdlib.h ...
- 洛谷.3803.[模板]多项式乘法(FFT)
题目链接:洛谷.LOJ. FFT相关:快速傅里叶变换(FFT)详解.FFT总结.从多项式乘法到快速傅里叶变换. 5.4 又看了一遍,这个也不错. 2019.3.7 叕看了一遍,推荐这个. #inclu ...
- 洛谷.3803.[模板]多项式乘法(NTT)
题目链接:洛谷.LOJ. 为什么和那些差那么多啊.. 在这里记一下原根 Definition 阶 若\(a,p\)互质,且\(p>1\),我们称使\(a^n\equiv 1\ (mod\ p)\ ...
- 洛谷.4512.[模板]多项式除法(NTT)
题目链接 多项式除法 & 取模 很神奇,记录一下. 只是主要部分,更详细的和其它内容看这吧. 给定一个\(n\)次多项式\(A(x)\)和\(m\)次多项式\(D(x)\),求\(deg(Q) ...
- 洛谷 P4512 [模板] 多项式除法
题目:https://www.luogu.org/problemnew/show/P4512 看博客:https://www.cnblogs.com/owenyu/p/6724611.html htt ...
- 洛谷P4238【模板】多项式求逆
洛谷P4238 多项式求逆:http://blog.miskcoo.com/2015/05/polynomial-inverse 注意:直接在点值表达下做$B(x) \equiv 2B'(x) - A ...
- 2018.12.30 洛谷P4238 【模板】多项式求逆
传送门 多项式求逆模板题. 简单讲讲? 多项式求逆 定义: 对于一个多项式A(x)A(x)A(x),如果存在一个多项式B(x)B(x)B(x),满足B(x)B(x)B(x)的次数小于等于A(x)A(x ...
随机推荐
- java服务端项目开发规范
更新内容 2015-03-13 (请先更新svn的mybatis.xml.BaseMapper.java.Pager.java文件) 加入测试类规范 加入事物控制规范 加入mapper接口规则 ...
- spring配置jackson不返回null值
#json不返回null spring.jackson.default-property-inclusion=non_null
- 最小费用最大流模板 洛谷P3381
题目描述 如题,给出一个网络图,以及其源点和汇点,每条边已知其最大流量和单位流量费用,求出其网络最大流和在最大流情况下的最小费用. 输入输出格式 输入格式: 第一行包含四个正整数N.M.S.T,分别表 ...
- REPLACE(替换字段内容)
语法: REPLACE <str1> WITH <str2> INTO <c> [LENGTH <l> ]. ABAP/4 搜索字段 <c> ...
- python2.7入门---运算符 &案例
已经分享过变量类型的基本概念了,接下来就研究了一下运算符的基础知识.接下来我们就来看一下内容.举个简单的例子 4 +5 = 9 .例子中,4 和 5 被称为操作数,"+" ...
- python2.7练习小例子(十八)
19):题目:一个数如果恰好等于它的因子之和,这个数就称为"完数".例如6=1+2+3.编程找出1000以内的所有完数. #!/usr/bin/python # -*- ...
- 联想ThinkPad S3-S440虚拟机安装,ubuntu安装,Hadoop(2.7.1)详解及WordCount运行,spark集群搭建
下载ubuntu操作系统版本 ubuntu-14.10-desktop-amd64.iso(64位) 安装过程出现错误: This kernel requires an X86-64 CPU,but ...
- 单服务器最大tcp连接数及调优汇总
启动线程数: 启动线程数=[任务执行时间/(任务执行时间-IO等待时间)]*CPU内核数 最佳启动线程数和CPU内核数量成正比,和IO阻塞时间成反比.如果任务都是CPU计算型任务,那么线程数最多不超过 ...
- jmeter常用的内置变量
1. vars API:http://jmeter.apache.org/api/org/apache/jmeter/threads/JMeterVariables.html vars.get(& ...
- IDEA + Maven + SSM 框架整合步骤
因为前段时间自己想写个SSM的demo,然而不知怎么回事,配置完之后出现错误,怎么都调不好.最后从朋友那里拷了一个SSM的demo过来搭建成功,写这篇东西也是为了以后如果还有需要可以方便的查阅,并且也 ...