给你斯特林数就换成通项公式,给你k次方就换成斯特林数

考虑换成通项公式之后,组合数没有什么好的处理方法

直接拆开,消一消阶乘

然后就发现了(j-k)和k!

往NTT方向靠拢

然后大功告成

其实只要想到把斯特林公式换成通项公式,考虑用NTT优化掉(j-k)^i

后面都是套路了。

#include<bits/stdc++.h>
#define reg register int
#define il inline
#define numb (ch^'0')
#define int long long
using namespace std;
typedef long long ll;
il void rd(int &x){
char ch;x=;bool fl=false;
while(!isdigit(ch=getchar()))(ch=='-')&&(fl=true);
for(x=numb;isdigit(ch=getchar());x=x*+numb);
(fl==true)&&(x=-x);
}
namespace Miracle{
const int N=+;
const int mod=;
const int G=;
const int GI=;
ll qm(ll x,ll y){
ll ret=;
while(y){
if(y&) ret=ret*x%mod;
x=x*x%mod;
y>>=;
}return ret;
}
int rev[*N];
ll a[*N],b[*N];
int n;
void NTT(ll *f,int c){
for(reg i=;i<n;++i){
if(rev[i]<i) swap(f[i],f[rev[i]]);
}
for(reg p=;p<=n;p<<=){
ll gen;
if(c==) gen=qm(G,(mod-)/p);
else gen=qm(GI,(mod-)/p);
int len=p/;
for(reg l=;l<n;l+=p){
ll buf=;
for(reg k=l;k<l+len;++k){
ll tmp=f[k+len]*buf%mod;
f[k+len]=(f[k]-tmp+mod)%mod;
f[k]=(f[k]+tmp)%mod;
buf=buf*gen%mod;
}
}
}
}
ll jie[N],inv[N],ni[N];
int main(){
rd(n);jie[]=;
for(reg i=;i<=n;++i) jie[i]=jie[i-]*i%mod;
inv[n]=qm(jie[n],mod-);inv[]=;
for(reg i=n-;i>=;--i) inv[i]=inv[i+]*(i+)%mod;
for(reg i=;i<=n;++i) ni[i]=((mod-mod/i)*ni[mod%i]+mod)%mod;
for(reg i=;i<=n;++i){
if(i&) a[i]=mod-inv[i];
else a[i]=inv[i];
if(i==) b[i]=n+;
else if(i==) b[i]=;
else b[i]=(qm(i,n+)-+mod)%mod*qm(i-,mod-)%mod*inv[i]%mod;
}
int m;
int lp=n;
for(m=n+n,n=;n<=m;n<<=);
for(reg i=;i<n;++i){
rev[i]=(rev[i>>]>>)|((i&)?n>>:);
}
// for(reg i=0;i<n;++i){
// cout<<a[i]<<" ";
// }cout<<endl;
// for(reg i=0;i<n;++i){
// cout<<b[i]<<" ";
// }cout<<endl; NTT(a,);NTT(b,);
for(reg i=;i<n;++i) b[i]=(ll)b[i]*a[i]%mod;
NTT(b,-);ll yuan=qm(n,mod-);
for(reg i=;i<n;++i) b[i]=b[i]*yuan%mod;
ll ans=;
for(reg j=;j<=lp;++j){
// cout<<" bj "<<j<<" : "<<b[j]<<endl;
ans=(ans+qm(,j)*jie[j]%mod*b[j]%mod)%mod;
//cout<<" ans "<<ans<<endl;
}
printf("%lld",ans);
return ;
} }
signed main(){
Miracle::main();
return ;
} /*
Author: *Miracle*
Date: 2018/12/28 21:51:13
*/

[HEOI2016/TJOI2016]求和——第二类斯特林数的更多相关文章

  1. [HEOI2016/TJOI2016]求和(第二类斯特林数)

    题目 [HEOI2016/TJOI2016]求和 关于斯特林数与反演的更多姿势\(\Longrightarrow\)点这里 做法 \[\begin{aligned}\\ Ans&=\sum\l ...

  2. BZOJ 4555 Luogu P4091 [HEOI2016/TJOI2016]求和 (第二类斯特林数)

    题目链接 (luogu) https://www.luogu.org/problem/P4091 (bzoj) https://www.lydsy.com/JudgeOnline/problem.ph ...

  3. 【BZOJ4555】【TJOI2016】【HEOI2016】求和 第二类斯特林数 NTT

    题目大意 求\(f(n)=\sum_{i=0}^n\sum_{j=0}^i2^j\times j!\times S(i,j)\\\) 对\(998244353\)取模 \(n\leq 100000\) ...

  4. bzoj 4555 [Tjoi2016&Heoi2016] 求和 —— 第二类斯特林数+NTT

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4555 关于第二类斯特林数:https://www.cnblogs.com/Wuweizhen ...

  5. BZOJ 4555:[TJOI2016&HEOI2016]求和(第二类斯特林数+NTT)

    题目链接 \(Description\) 求 \[\sum_{i=0}^n\sum_{j=0}^iS(i,j)2^jj!\]对998244353取模后的结果. \(n<=10^5\) \(Sol ...

  6. BZOJ4555 HEOI2016/TJOI2016求和(NTT+斯特林数)

    S(i,j)=Σ(-1)j-k(1/j!)·C(j,k)·ki=Σ(-1)j-k·ki/k!/(j-k)!.原式=ΣΣ(-1)j-k·ki·2j·j!/k!/(j-k)! (i,j=0~n).可以发现 ...

  7. bzoj 4555 [Tjoi2016&Heoi2016]求和 NTT 第二类斯特林数 等比数列求和优化

    [Tjoi2016&Heoi2016]求和 Time Limit: 40 Sec  Memory Limit: 128 MBSubmit: 679  Solved: 534[Submit][S ...

  8. 【BZOJ 4555】[Tjoi2016&Heoi2016]求和 多项式求逆/NTT+第二类斯特林数

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

  9. P4091 [HEOI2016/TJOI2016]求和(第二类斯特林数+NTT)

    传送门 首先,因为在\(j>i\)的时候有\(S(i,j)=0\),所以原式可以写成\[Ans=\sum_{i=0}^n\sum_{j=0}^nS(i,j)\times 2^j\times j! ...

随机推荐

  1. Jmeter使用JDBC链接数据库进行压力测试

    一.关于性能测试 对数据库进行压测时,我们需要关注的几个方面: 1.系统相关指标,诸如:系统CPU/内存/IO等 2.进程相关指标,诸如:mysql该数据库的对应的进程占用CPU/内存/IO等 3.数 ...

  2. Appium+python的单元测试框架unittest(2)——fixtures(转)

    (原文:https://www.cnblogs.com/fancy0158/p/10046333.html) unittest提供的Fixtures用以在测试执行前和执行后进行必要的准备和清理工作,可 ...

  3. 测试类异常Manual close is not allowed over a Spring managed SqlSession

    在用Spring 和mybatis整合的 写测试类的时候报出解决办法:在全局配置文件   class="org.mybatis.spring.SqlSessionTemplate" ...

  4. 转载笔记:DropDownList无限级分类(灵活控制显示形式)

    主要使用递归实现,数据库结构: 最终样式:  1protected void Page_Load(object sender, EventArgs e) 2    { 3        if (!Pa ...

  5. Serverless 架构的优点和缺点

    Serverless 的优势 在我使用 Serverless Framework 开发 AWS Serverless 应用的过程中,最方便的莫过于,第一次部署和第二次.第三次部署没有什么区别.只需要执 ...

  6. AppCan 之初体验

    平台概述 什么是AppCan 移步这里,楼主的一句话:可以匹敌 Phonegap .Titanium .Sencha Touch .MUI .ImagApp.Nitrous .apicloud .起步 ...

  7. uc浏览器的用户体验

    用户界面: 我认为,uc浏览器的用户界面还是很招人喜欢的,可以很容易让用户找到自己想看的网页.简单快捷. 记住用户的选择: uc在每次用户访问完网站之后都会记住用户访问的高频网站,以便下次用户可以更好 ...

  8. 2018软工实践—Alpha冲刺(7)

    队名 火箭少男100 组长博客 林燊大哥 作业博客 Alpha 冲鸭鸭鸭鸭鸭鸭鸭! 成员冲刺阶段情况 林燊(组长) 过去两天完成了哪些任务 协调各成员之间的工作 学习MSI.CUDA 试运行软件并调试 ...

  9. 2018软工实践—Alpha冲刺(3)

    队名 火箭少男100 组长博客 林燊大哥 作业博客 Alpha 冲鸭鸭鸭! 成员冲刺阶段情况 林燊(组长) 过去两天完成了哪些任务 协调各成员之间的工作 协助后端界面的开发 搭建项目运行的服务器环境 ...

  10. OOP 2.2 构造函数

    1.概念 成员函数的一种 名字与类名相同,可以有参数,没有返回值(void也不行) 作用:对对象进行初始化,如给成员函数赋初始值 如果定义时没有构造函数,则编译器生成一个默认无参数的构造函数 默认构造 ...