COGS 2259 异化多肽——生成函数+多项式求逆
2024-09-04 01:12:18
题目:http://cogs.pro:8080/cogs/problem/problem.php?pid=2259
详见:https://www.cnblogs.com/Zinn/p/10054569.html
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#define ll long long
using namespace std;
const int N=1e5+,M=(<<)+,mod=,g=;
int n,a[M],b[M],A[M],len,r[M],c[M];
int rdn()
{
int ret=;bool fx=;char ch=getchar();
while(ch>''||ch<''){if(ch=='-')fx=;ch=getchar();}
while(ch>=''&&ch<='') ret=ret*+ch-'',ch=getchar();
return fx?ret:-ret;
}
void upd(int &x){x>=mod?x-=mod:;}
int pw(int x,int k)
{int ret=;while(k){if(k&)ret=(ll)ret*x%mod;x=(ll)x*x%mod;k>>=;}return ret;}
void ntt(int *a,bool fx)
{
for(int i=;i<len;i++)
if(i<r[i])swap(a[i],a[r[i]]);
for(int R=;R<=len;R<<=)
{
int wn=pw( g,fx?(mod-)-(mod-)/R:(mod-)/R );
for(int i=,m=R>>;i<len;i+=R)
for(int j=,w=;j<m;j++,w=(ll)w*wn%mod)
{
int x=a[i+j], y=(ll)w*a[i+m+j]%mod;
a[i+j]=x+y; upd(a[i+j]);
a[i+m+j]=x+mod-y; upd(a[i+m+j]);
}
}
if(!fx)return ; int inv=pw(len,mod-);
for(int i=;i<len;i++)a[i]=(ll)a[i]*inv%mod;
}
void getinv(int n,int *a,int *b)
{
if(n==){b[]=pw(a[],mod-);return;}
getinv(n+>>,a,b);
for(len=;len<n<<;len<<=);
for(int i=;i<len;i++)r[i]=(r[i>>]>>)+((i&)?len>>:);
for(int i=;i<n;i++)A[i]=a[i]; for(int i=n;i<len;i++)A[i]=;
ntt(A,); ntt(b,);
for(int i=;i<len;i++)b[i]=(-(ll)A[i]*b[i])%mod*b[i]%mod+mod,upd(b[i]);
ntt(b,);
for(int i=n;i<len;i++)b[i]=;
}
int main()
{
freopen("polypeptide.in","r",stdin);
freopen("polypeptide.out","w",stdout);
n=rdn();int m;m=rdn();
for(int i=,d;i<=m;i++)
{
d=rdn();
a[d]+=mod-,upd(a[d]);
}
a[]++; upd(a[]);
getinv(n+,a,b);
printf("%d\n",b[n]);
return ;
}
最新文章
- CentOS7 重置root密码
- ”未在本地计算机上注册“microsoft.et.OLEDB.4.0”提供程序。“解决方案大集合
- PHP 使用命名空间(namespace),实现自动加载
- sublime问题汇总
- 中南大学第一届长沙地区程序设计邀请赛 To Add Which?
- floodlight StaticFlowPusher 基于网段写flow,通配
- deque用法 和与vector的区别
- ubuntu12.04的vim配置
- HDOJ 4687 Boke and Tsukkomi 一般图最大匹配带花树+暴力
- 如何针对已经安装好的Apache/PHP/Mysql/Nginx程序查看他们的编译参数
- make menuconfig 笔记
- centos7中bash: maven: 未找到命令... 解决办法
- FineUILearning
- 双网卡双线路DNS解析分析
- 【 PostgreSQL】查询某模式下所有表的分布键信息
- matlab:统计矩阵中某元素的个数
- Java虚拟机(六):JVM调优工具
- csharp:FlowLayoutPanel
- SpringMVC整合fastjson、easyui 乱码问题
- unix gcc编译过程