「Luogu5395」【模板】第二类斯特林数·行
「Luogu5395」【模板】第二类斯特林数·行
problem
Solution
一句话题意:求\(_{i=0}^n\begin{Bmatrix}n\\i\end{Bmatrix}\)
根据第二类斯特林数的展开式,有
\[\begin{Bmatrix}n\\k\end{Bmatrix}=\frac{1}{k!}\sum_{i=0}^k(-1)^i\begin{pmatrix}k\\i\end{pmatrix}(k-i)^n\]
具体证明可以看这里
进一步整理,式子化为
\[\begin{Bmatrix}n\\k\end{Bmatrix}=\sum_{i=0}^k\frac{(-1)^i}{i!}\times \frac{(k-i)^n}{(k-i)!}\]
可以发现这是一个卷积的形式
构造多项式
\[F(x)=\sum_{i=0}^n\frac{(-1)^i}{i!}x^i\]
\[G(x)=\sum_{i=0}^n\frac{i^n}{i!}x^i\]
\[S(x)=F(x)*G(x)\]
则\(S(x)\)的\(k\)次项系数即为\(\begin{Bmatrix}n\\k\end{Bmatrix}\)
预处理阶乘的逆元
本题的模数有原根\(3\),所以直接用\(NTT\)做卷积就可以了
时间复杂度\(O(n\log n)\)
Code
#include <cstdlib>
#include <iostream>
#include <algorithm>
#include <cmath>
#include <cstdio>
#include <cstring>
#define inv(x) (fastpow((x),mod-2))
using namespace std;
typedef long long ll;const int maxn=200005;
const ll mod=167772161,g=3,ig=55924054;
int n;
ll a[maxn<<2],b[maxn<<2],ifac[maxn];ll fastpow(ll a,ll b)
{ll re=1,base=a;while(b){if(b&1)re=re*base%mod;base=base*base%mod;b>>=1;}return re;
}int len;
int rev[maxn<<2];void NTT(ll *f,int type)
{for(register int i=0;i<len;++i)if(i<rev[i])swap(f[i],f[rev[i]]);for(register int p=2;p<=len;p<<=1){int length=p>>1;ll unr=fastpow(type==1?g:ig,(mod-1)/p);for(register int l=0;l<len;l+=p){ll w=1;for(register int i=l;i<l+length;++i,w=w*unr%mod){ll tt=f[i+length]*w%mod;f[i+length]=(f[i]-tt+mod)%mod;f[i]=(f[i]+tt)%mod;}}}if(type==-1){ll ilen=inv(len);for(register int i=0;i<len;++i)f[i]=f[i]*ilen%mod;}
}int main()
{scanf("%d",&n);ifac[0]=1;for(register ll i=1;i<=n;++i)ifac[i]=ifac[i-1]*i%mod;ifac[n]=inv(ifac[n]);for(register ll i=n-1;i;--i)ifac[i]=ifac[i+1]*(i+1)%mod;for(register int i=0,o=1;i<=n;++i,o=mod-o)a[i]=o*ifac[i]%mod,b[i]=fastpow(i,n)*ifac[i]%mod;for(len=1;len<=n+n;len<<=1);for(register int i=1;i<len;++i)rev[i]=(rev[i>>1]>>1)|((i&1)?(len>>1):0);NTT(a,1);NTT(b,1);for(register int i=0;i<len;++i)a[i]=a[i]*b[i]%mod;NTT(a,-1);for(register int i=0;i<=n;++i)printf("%lld ",a[i]);
}
转载于:https://www.cnblogs.com/lizbaka/p/11370782.html
「Luogu5395」【模板】第二类斯特林数·行相关推荐
- P5395 【模板】第二类斯特林数·行
P5395 [模板]第二类斯特林数·行 题目描述 Solution 这题是[Tjoi2016&Heoi2016]求和的前置技能啊-- 我似乎直接跳过这题,去做应用了QAQQAQQAQ. Cod ...
- 第一类斯特林数 / 第二类斯特林数 / 贝尔数 小结
第一类斯特林数 有 nnn 个不同的小球,将它们串成 mmm 条项链,有多少种不同的方案? 第一类斯特林数的表示方法为 [nm]\left[\begin{matrix}n\\m\end{matrix} ...
- BZOJ 2159 「国家集训队」Crash 的文明世界(第二类斯特林数,换根DP)【BZOJ计划】
整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 题目链接 https://hydro.ac/d/bzoj/p/2159 是 hydro 的 BZOJ ...
- [学习笔记]第一类/第二类斯特林数
前置知识 · 组合数学基础 · 容斥原理 · 生成函数 · FFT/NTT · 多项式exp,多项式ln,多项式快速幂,多项式平移 一些规定 · 下降幂 xn‾=∏i=1n(x−i+1)x^{\und ...
- 【BZOJ 4555】[Tjoi2016Heoi2016]求和 多项式求逆/NTT+第二类斯特林数
出处0.0 用到第二类斯特林数的性质,做法好像很多,我打的是直接ntt,由第二类斯特林数的容斥公式可以推出,我们可以对于每一个i,来一次ntt求出他与所有j组成的第二类斯特林数的值,这个时候我们是O( ...
- 【组合数学】第一类,第二类斯特林数(Stirling),Bell数
第一类斯特林数 定理: 第一类斯特林数S1(p,k)计数的是把p个对象排成k个非空循环排列的方法数. 证明:把上述定理叙述中的循环排列叫做圆圈 递推公式: S1(p,p)=1(p>=0),有p个 ...
- 新疆大学(新大)OJ xju 1006: 比赛排名 第二类斯特林数+阶乘
题目链接:http://acm.xju.edu.cn/JudgeOnline/problem.php?id=1006 第二类斯特林数: 第二类Stirling数实际上是集合的一个拆分,表示将n个不同的 ...
- 【CF961G】Partitions(第二类斯特林数)
[CF961G]Partitions(第二类斯特林数) 题面 CodeForces 洛谷 题解 考虑每个数的贡献,显然每个数前面贡献的系数都是一样的. 枚举当前数所在的集合大小,所以前面的系数\(p\ ...
- 1847 奇怪的数学题(杜教筛 + Min_25 + 第二类斯特林数)
1847 奇怪的数学题 推式子 ∑i=1n∑j=1nsgcd(i,j)k∑d=1nsgcd(d)k∑i=1nd∑j=1nd[gcd(i,j)=1]∑d=1nsgcd(d)k(2∑i=1ndϕ(i)−1 ...
最新文章
- MVC框架内容-控制器
- Kafka如何在千万级别时优化JVM GC问题?
- Redis 命令--Redis有序集合(sorted set)
- [Unity] 3D数学基础 - 坐标系、向量、矩阵
- JavaEE 7 正式发布
- swift 打开第三方应用_iOS卡通人物帧动画入门9(大结局):番外篇-扩展第三方类
- FileIo 删除类中的private方法
- 手机游戏降低游戏延迟的软件_怎么降低手机网络延迟(减少网络延迟的5个小技巧)...
- 【bzoj2406】矩阵 二分+有上下界可行流
- JLINK V9 修复小记
- datetime中strftime和strptime用法
- vue3.0实现地图功能
- 微博认证:黄v怎么认证?(认证技巧分享)
- ipython安装成功后用不了_ipython安装避坑指南
- java经典算法(三)---zws
- php 中国地图编辑,科学网—如何正确绘制中国示意性地图?编辑给您提建议 - 科学出版社的博文...
- 三十六以内某进制下的数转换为另一进制下的数(递归版,迭代版)——秦九昭算法
- 计算机程序计算排列组合(规避溢出)
- ios android与wp,在iOS与Android间选择WP
- 结对-动漫网页设计-需求分析
热门文章
- 网校系统推荐eduline_网校系统的各项功能的用处
- php三级栏目调用,织梦当前栏目调用二级、三级栏目且栏目高亮解决方法
- github page hexo博客gitee_利用Github和hexo搭建个人免费博客
- JavaScript高级之继承
- LeetCode MySQL 1479. 周内每天的销售情况(dayname星期几)
- LeetCode 1248. 统计「优美子数组」(要复习)
- LeetCode 1419. 数青蛙(脑洞题)
- 程序员面试金典 - 面试题 04.05. 合法二叉搜索树(中序遍历)
- 数据结构--链表--LRU缓存
- mybatis在指定库建表_使用MyBatis Plus自动添加数据库表中的创建时间、创建者、更新时间、更新者...