#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<cmath>
#define ll long long
#define N 300005
using namespace std;
const int ni = ;
const int p = ;
ll pw(ll x,int y)
{
ll lst=;
while(y)
{
if(y&)lst=(lst*x)%p;
y>>=;
x=(x*x)%p;
}
return lst;
}
int n,m;
int c[N],a[N],b[N],R[N];
int invb[N];
int ji[N],jie[N],nini[N];
int tmp[N];
void fft(int *a,int n,int f)
{
for(int i=;i<n;i++)if(R[i]>i)swap(a[i],a[R[i]]);
for(int i=;i<n;i<<=)
{
int wn=pw(ni,((p-)/(i<<)*f+p-)%(p-));
for(int j=;j<n;j+=(i<<))
{
int w=;
for(int k=;k<i;k++,w=((ll)w*wn)%p)
{
int x=a[j+k];int y=((ll)a[j+i+k]*w)%p;
a[j+k]=(x+y)%p;a[j+k+i]=(x-y+p)%p;
}
}
}
if(f==-)
{
ll nii=pw(n,p-);
for(int i=;i<n;i++)a[i]=(ll)a[i]*nii%p;
}
return ;
}
void get_inv(int *a,int *b,int n)
{
if(n==)
{
b[]=pw(a[],p-);
return ;
}
get_inv(a,b,n>>);
for(int i=;i<n;i++)tmp[i]=a[i];
int l=;int nn=;
while(nn<n<<)nn<<=,l++;
for(int i=;i<nn;i++)R[i]=(R[i>>]>>)|((i&)<<(l-));
fft(tmp,nn,);fft(b,nn,);
for(int i=;i<nn;i++)
b[i]=((ll)b[i]*(-(ll)tmp[i]*b[i]%p+p))%p;
fft(b,nn,-);
memset(b+n,,sizeof(int)*n);
}
int main()
{
scanf("%d",&n);
int l=;
for(m=n,n=;n<=m;n<<=)l++;
nini[]=jie[]=ji[]=;
for(int i=;i<n;i++)jie[i]=((ll)jie[i-]*i)%p;
for(int i=;i<n;i++)
b[i]=pw(,((ll)i*(i-)>>)%(p-))*pw(jie[i],p-)%p;
for(int i=;i<n;i++)
c[i]=pw(,((ll)i*(i-)>>)%(p-))*pw(jie[i-],p-)%p;
get_inv(b,invb,n);
l++;int tp=n<<;
for(int i=;i<tp;i++)R[i]=(R[i>>]>>)|((i&)<<(l-));
fft(invb,tp,);
fft(c,tp,);
for(int i=;i<tp;i++)a[i]=(ll)invb[i]*c[i]%p;
fft(a,tp,-);
printf("%d\n",(ll)a[m]*jie[m-]%p);
return ;
}

NTT+多项式求逆的更多相关文章

  1. 【bzoj3456】城市规划 容斥原理+NTT+多项式求逆

    题目描述 求出n个点的简单(无重边无自环)无向连通图数目mod 1004535809(479 * 2 ^ 21 + 1). 输入 仅一行一个整数n(<=130000) 输出 仅一行一个整数, 为 ...

  2. NTT+多项式求逆+多项式开方(BZOJ3625)

    定义多项式$h(x)$的每一项系数$h_i$,为i在c[1]~c[n]中的出现次数. 定义多项式$f(x)$的每一项系数$f_i$,为权值为i的方案数. 通过简单的分析我们可以发现:$f(x)=\fr ...

  3. BZOJ1042 HAOI2008硬币购物(任意模数NTT+多项式求逆+生成函数/容斥原理+动态规划)

    第一眼生成函数.四个等比数列形式的多项式相乘,可以化成四个分式.其中分母部分是固定的,可以多项式求逆预处理出来.而分子部分由于项数很少,询问时2^4算一下贡献就好了.这个思路比较直观.只是常数巨大,以 ...

  4. 【BZOJ 3456】 3456: 城市规划 (NTT+多项式求逆)

    3456: 城市规划 Time Limit: 40 Sec  Memory Limit: 256 MBSubmit: 658  Solved: 364 Description 刚刚解决完电力网络的问题 ...

  5. BZOJ 4555 [Tjoi2016&Heoi2016]求和 ——分治 NTT 多项式求逆

    不想多说了,看网上的题解吧,我大概说下思路. 首先考察Stirling的意义,然后求出递推式,变成卷积的形式. 然后发现贡献是一定的,我们可以分治+NTT. 也可以直接求逆(我不会啊啊啊啊啊) #in ...

  6. BZOJ 3456 城市规划 ( NTT + 多项式求逆 )

    题目链接: https://www.lydsy.com/JudgeOnline/problem.php?id=3456 题意: 求出\(n\)个点的简单(无重边无自环)无向连通图的个数.(\(n< ...

  7. [BZOJ3456]城市规划:DP+NTT+多项式求逆

    写在前面的话 昨天听吕老板讲课,数数题感觉十分的神仙. 于是,ErkkiErkko这个小蒟蒻也要去学数数题了. 分析 Miskcoo orz 带标号无向连通图计数. \(f(x)\)表示\(x\)个点 ...

  8. P4233-射命丸文的笔记【NTT,多项式求逆】

    正题 题目链接:https://www.luogu.com.cn/problem/P4233 题目大意 随机选择一条有哈密顿回路的\(n\)个点的竞赛图,求选出图的哈密顿回路的期望个数. 对于每个\( ...

  9. BZOJ 3625 [Codeforces Round #250]小朋友和二叉树 ——NTT 多项式求逆 多项式开根

    生成函数又有奇妙的性质. $F(x)=C(x)*F(x)*F(x)+1$ 然后大力解方程,得到一个带根号的式子. 多项式开根有解只与常数项有关. 发现两个解只有一个是成立的. 然后多项式开根.求逆. ...

  10. luoguP4512 【模板】多项式除法 NTT+多项式求逆+多项式除法

    Code: #include<bits/stdc++.h> #define maxn 300000 #define ll long long #define MOD 998244353 # ...

随机推荐

  1. Dede织梦验证码不显示,织梦后台登陆验证码不显示解决方法

    关于"织梦验证码不显示"的解决方法 "织梦验证码无法显示出来"的问题分析? 1.之前显示正常,但是换了服务器后就不能够正常显示:(这种通常是网站程序经过迁移后所 ...

  2. Go单元测试注意事项及测试单个方法和整个文件的命令

    Go程序开发过程中免不了要对所写的单个业务方法进行单元测试,Go提供了 "testing" 包可以实现单元测试用例的编写,不过想要正确编写单元测试需要注意以下三点: Go文件名必须 ...

  3. Sprint会议3

    昨天:熟悉了一下软件操作,设计了图标. 今天:今天满课,没有做什么实质性的进展. 遇到问题:由于没干什么,也没遇到什么问题.

  4. HDU 4126 Genghis Khan the Conqueror 最小生成树+树形dp

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4126 Genghis Khan the Conqueror Time Limit: 10000/50 ...

  5. vs2010调试-尝试调试dll源码。

    第一步: 打开“调试”——“选项和设置”——点击调试下“常规”——设置启用“启用.NET Framework源代码单步执行 ” 第二步 选择“符号”——选择Microsoft符号服务器——设置符号缓存 ...

  6. InputStreamReader & OutputStreamWriter

    InputStreamReader 是字节流通向字符流的桥梁:它使用指定的 charset 读取字节并将其解码为字符. OutputStreamWriter 是字符流通向字节流的桥梁:可使用指定的 c ...

  7. Scrum 7.0

    Sprint回顾 让我们一次比一次做得更好.   1.回顾组织 主题:“我们怎样才能在下个sprint中做的更好?” 时间:设定为1至2个小时. 参与者:整个团队. 场所:能够在不受干扰的情况下讨论. ...

  8. 0603团队变化+sprint第二个冲刺

    开始一个新的冲刺: 起止:2016.6.1~2016.6.14 按照以下过程进行 ProductBacklog:继续向下细化 Sprint 计划会议:确定此次冲刺要完成的目标 Sprint Backl ...

  9. Scrum 冲刺博客链接集合

    DAY1 http://www.cnblogs.com/qiaokeliweibaba/p/8901187.html DAY2 http://www.cnblogs.com/qiaokeliweiba ...

  10. Js获取上一月份

    new Date(new Date().setMonth(new Date().getMonth() - 1))