「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」【模板】第二类斯特林数·行相关推荐

  1. P5395 【模板】第二类斯特林数·行

    P5395 [模板]第二类斯特林数·行 题目描述 Solution 这题是[Tjoi2016&Heoi2016]求和的前置技能啊-- 我似乎直接跳过这题,去做应用了QAQQAQQAQ. Cod ...

  2. 第一类斯特林数 / 第二类斯特林数 / 贝尔数 小结

    第一类斯特林数 有 nnn 个不同的小球,将它们串成 mmm 条项链,有多少种不同的方案? 第一类斯特林数的表示方法为 [nm]\left[\begin{matrix}n\\m\end{matrix} ...

  3. BZOJ 2159 「国家集训队」Crash 的文明世界(第二类斯特林数,换根DP)【BZOJ计划】

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 题目链接 https://hydro.ac/d/bzoj/p/2159 是 hydro 的 BZOJ ...

  4. [学习笔记]第一类/第二类斯特林数

    前置知识 · 组合数学基础 · 容斥原理 · 生成函数 · FFT/NTT · 多项式exp,多项式ln,多项式快速幂,多项式平移 一些规定 · 下降幂 xn‾=∏i=1n(x−i+1)x^{\und ...

  5. 【BZOJ 4555】[Tjoi2016Heoi2016]求和 多项式求逆/NTT+第二类斯特林数

    出处0.0 用到第二类斯特林数的性质,做法好像很多,我打的是直接ntt,由第二类斯特林数的容斥公式可以推出,我们可以对于每一个i,来一次ntt求出他与所有j组成的第二类斯特林数的值,这个时候我们是O( ...

  6. 【组合数学】第一类,第二类斯特林数(Stirling),Bell数

    第一类斯特林数 定理: 第一类斯特林数S1(p,k)计数的是把p个对象排成k个非空循环排列的方法数. 证明:把上述定理叙述中的循环排列叫做圆圈 递推公式: S1(p,p)=1(p>=0),有p个 ...

  7. 新疆大学(新大)OJ xju 1006: 比赛排名 第二类斯特林数+阶乘

    题目链接:http://acm.xju.edu.cn/JudgeOnline/problem.php?id=1006 第二类斯特林数: 第二类Stirling数实际上是集合的一个拆分,表示将n个不同的 ...

  8. 【CF961G】Partitions(第二类斯特林数)

    [CF961G]Partitions(第二类斯特林数) 题面 CodeForces 洛谷 题解 考虑每个数的贡献,显然每个数前面贡献的系数都是一样的. 枚举当前数所在的集合大小,所以前面的系数\(p\ ...

  9. 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 ...

最新文章

  1. MVC框架内容-控制器
  2. Kafka如何在千万级别时优化JVM GC问题?
  3. Redis 命令--Redis有序集合(sorted set)
  4. [Unity] 3D数学基础 - 坐标系、向量、矩阵
  5. JavaEE 7 正式发布
  6. swift 打开第三方应用_iOS卡通人物帧动画入门9(大结局):番外篇-扩展第三方类
  7. FileIo 删除类中的private方法
  8. 手机游戏降低游戏延迟的软件_怎么降低手机网络延迟(减少网络延迟的5个小技巧)...
  9. 【bzoj2406】矩阵 二分+有上下界可行流
  10. JLINK V9 修复小记
  11. datetime中strftime和strptime用法
  12. vue3.0实现地图功能
  13. 微博认证:黄v怎么认证?(认证技巧分享)
  14. ipython安装成功后用不了_ipython安装避坑指南
  15. java经典算法(三)---zws
  16. php 中国地图编辑,科学网—如何正确绘制中国示意性地图?编辑给您提建议 - 科学出版社的博文...
  17. 三十六以内某进制下的数转换为另一进制下的数(递归版,迭代版)——秦九昭算法
  18. 计算机程序计算排列组合(规避溢出)
  19. ios android与wp,在iOS与Android间选择WP
  20. 结对-动漫网页设计-需求分析

热门文章

  1. 网校系统推荐eduline_网校系统的各项功能的用处
  2. php三级栏目调用,织梦当前栏目调用二级、三级栏目且栏目高亮解决方法
  3. github page hexo博客gitee_利用Github和hexo搭建个人免费博客
  4. JavaScript高级之继承
  5. LeetCode MySQL 1479. 周内每天的销售情况(dayname星期几)
  6. LeetCode 1248. 统计「优美子数组」(要复习)
  7. LeetCode 1419. 数青蛙(脑洞题)
  8. 程序员面试金典 - 面试题 04.05. 合法二叉搜索树(中序遍历)
  9. 数据结构--链表--LRU缓存
  10. mybatis在指定库建表_使用MyBatis Plus自动添加数据库表中的创建时间、创建者、更新时间、更新者...