多项式求逆入门 板题(Luogu P4238)
- 下面是代码,推导详见 传送门
模板Code
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
const int mod = 998244353, g = 3, MAXN = 1<<18;
typedef long long LL;
inline void change(int arr[], const int &len)
{
register int i, j, k;
for(i = 1, j = len/2; i < len-1; ++i)
{
if(i < j) swap(arr[i], arr[j]);
k = len/2;
while(j >= k) j -= k, k >>= 1;
j += k;
}
}
inline int qmul(int a, int b, const int &c)
{
register int ret = 1;
while(b)
{
if(b&1) ret = (LL)ret * a % c;
a = (LL)a * a % c; b >>= 1;
}
return ret;
}
inline void NTT(int arr[], const int &len, const int &flg)
{
change(arr, len);
register int wn, w, A0, wA1, i, j, k;
for(i = 2; i <= len; i <<= 1)
{
if(~flg) wn = qmul(g, (mod-1)/i, mod);
else wn = qmul(g, (mod-1) - (mod-1)/i, mod);
for(j = 0; j < len; j += i)
{
w = 1;
for(k = j; k < j + i/2; ++k)
{
A0 = arr[k], wA1 = (LL)w * arr[k + i/2]% mod;
arr[k] = (A0 + wA1) % mod;
arr[k + i/2] = ((A0 - wA1) % mod + mod) % mod;
w = (LL)w * wn % mod;
}
}
}
if(flg == -1)
{
register int rev = qmul(len, mod-2, mod);
for(i = 0; i < len; ++i)
arr[i] = (LL)arr[i] * rev % mod;
}
}
int a[MAXN], b[MAXN], c[MAXN];
void work(const int °, int a[], int b[])
{
if(deg == 1) { b[0] = qmul(a[0], mod-2, mod); return; }
work(deg+1>>1, a, b);
register int len = 1;
while(len < deg<<1) len <<= 1;
for(int i = 0; i < deg; ++i) c[i] = a[i];
for(int i = deg; i < len; ++i) c[i] = 0;
NTT(c, len, 1); NTT(b, len, 1);
for(int i = 0; i < len; ++i)
b[i] = (2 - (LL)b[i]*c[i]%mod + mod) % mod * b[i] % mod;
NTT(b, len, -1);
for(int i = deg; i < len; ++i) b[i] = 0;
}
int n;
void init()
{
scanf("%d", &n);
for(int i = 0; i < n; ++i)
scanf("%d", &a[i]);
}
void solve()
{
work(n, a, b);
for(int i = 0; i < n; ++i)
printf("%d%c", b[i], i == n-1 ? '\n' : ' ');
}
int main ()
{
init(); solve();
}
多项式求逆入门 板题(Luogu P4238)的更多相关文章
- luogu P4725 多项式对数函数 (模板题、FFT、多项式求逆、求导和积分)
手动博客搬家: 本文发表于20181125 13:25:03, 原地址https://blog.csdn.net/suncongbo/article/details/84487306 题目链接: ht ...
- 洛谷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 ...
- [模板][P4238]多项式求逆
NTT多项式求逆模板,详见代码 #include <map> #include <set> #include <stack> #include <cmath& ...
- P4238 【模板】多项式求逆
思路 多项式求逆就是对于一个多项式\(A(x)\),求一个多项式\(B(x)\),使得\(A(x)B(x) \equiv 1 \ (mod x^n)\) 假设现在多项式只有一项,显然\(B(x)\)的 ...
- [洛谷P4238]【模板】多项式求逆
题目大意:多项式求逆 题解:$ A^{-1}(x) = (2 - B(x) * A(x)) \times B(x) \pmod{x^n} $ ($B(x)$ 为$A(x)$在$x^{\lceil \d ...
- hdu 5730 Shell Necklace [分治fft | 多项式求逆]
hdu 5730 Shell Necklace 题意:求递推式\(f_n = \sum_{i=1}^n a_i f_{n-i}\),模313 多么优秀的模板题 可以用分治fft,也可以多项式求逆 分治 ...
- NTT+多项式求逆+多项式开方(BZOJ3625)
定义多项式$h(x)$的每一项系数$h_i$,为i在c[1]~c[n]中的出现次数. 定义多项式$f(x)$的每一项系数$f_i$,为权值为i的方案数. 通过简单的分析我们可以发现:$f(x)=\fr ...
- BZOJ 3456: 城市规划 与 多项式求逆算法介绍(多项式求逆, dp)
题面 求有 \(n\) 个点的无向有标号连通图个数 . \((1 \le n \le 1.3 * 10^5)\) 题解 首先考虑 dp ... 直接算可行的方案数 , 容易算重复 . 我们用总方案数减 ...
随机推荐
- [Linux] - Manjaro ARM 系统配置(更新镜像源,安装 Docker 和 Dotnet Core)
硬件:Raspberry Pi 4B系统:Manjaro-ARM-xfce-rpi4-19.08网址:https://manjaro.org/ Issue系统启动后,中文字符显示为小方格乱码 解决:安 ...
- OpenLayers加载百度离线瓦片地图(完美无偏移)
本文使用OpenLayers最新版本V5.3.0演示:如何使用OpenLayer完美无偏移加载百度离线瓦片地图.OpenLayers 5.3.0下载地址为:https://github.com/ope ...
- C++ 定义一个指针类型
#include <iostream>using namespace std; int main(){ int a= 10; //定义变量a int * p ; //定义个指针P p = ...
- 软件测试人员必备的Python知识图库
UI自动化测试(Python+Selenium等) 接口测试(Python requests等) 性能测试(Python Locust等) 安全性测试(Python Scapy等) 兼容性测试(Pyt ...
- Flink WorkCount代码
Flink-scala所需依赖 <properties> <flink.version>1.7.0</flink.version> </properties& ...
- 认证授权-学习笔记2-OpenId Connect
简介 简单来说:OIDC是OpenID Connect的简称,OIDC=(Identity, Authentication) + OAuth 2.0.它在OAuth2上构建了一个身份层,是一个基于OA ...
- java之mybatis整合spring
这篇讲解spring+mybatis的整合. 目录结构: 一. 整合spring的第一种方法 1. 新建 java 项目 : spring_mybatis 2.导入jar 包-----spring和m ...
- C#泛型集合之——链表
链表基础 1.概述:C#中泛型集合中的链表—LinkedList 是一个双向链表,其结点为LinkedListNode 结构 其中,结点结构包含:Next,Previous,Value三部分.且结点中 ...
- 用jQuery的toggle方法实现元素的左右滑动隐藏
通常情况下给元素加toggle方法通常会是上下滑动隐藏,而有时我们又需要左右滑动隐藏怎么办呢 $(document).ready(function(){ $('#example').click(fun ...
- python错误日志记录工具,解决项目排错问题
我们写项目的时候难免会遇到代码报错的问题,遇到这样的问题了如何快速的定位问题并解决问题呢? 我今天来整理了利用python只带的工具来解决这个问题,我能需要使用的库有: logging os 这些都是 ...