推柿子

第二类斯特林数的容斥表达

fft卡精度就用ntt吧qwq。

#include <iostream>
#include <cstdio>
using namespace std;
typedef long long ll;
int n, lim=1, limcnt, rev[300005], inv[300005], a[300005], b[300005], jie[300005];
const int mod=998244353, gg=3, gi=332748118;
int ksm(int a, int b){
int re=1;
while(b){
if(b&1) re = (ll)re * a % mod;
a = (ll)a * a % mod;
b >>= 1;
}
return re;
}
void ntt(int a[], int opt){
for(int i=0; i<lim; i++)
if(i<rev[i])
swap(a[i], a[rev[i]]);
for(int i=2; i<=lim; i<<=1){
int tmp=i>>1, wn=ksm(opt==1?gg:gi, (mod-1)/i);
for(int j=0; j<lim; j+=i){
int w=1;
for(int k=0; k<tmp; k++){
int tmp1=a[j+k], tmp2=(ll)w*a[j+k+tmp]%mod;
a[j+k] = (tmp1 + tmp2) % mod;
a[j+k+tmp] = (tmp1 - tmp2 + mod) % mod;
w = (ll)w * wn % mod;
}
}
}
if(opt==-1){
int inv=ksm(lim, mod-2);
for(int i=0; i<lim; i++)
a[i] = (ll)a[i] * inv % mod;
}
}
int main(){
cin>>n;
while(lim<=n+n) lim <<= 1, limcnt++;
for(int i=0; i<lim; i++)
rev[i] = (rev[i>>1]>>1) | ((i&1)<<(limcnt-1));
int tmp=1, ans=0;
inv[0] = inv[1] = jie[0] = jie[1] = 1;
for(int i=2; i<lim; i++){
jie[i] = (ll)jie[i-1] * i % mod;
inv[i] = (ll)(mod-mod/i) * inv[mod%i] % mod;
}
for(int i=2; i<lim; i++)
inv[i] = (ll)inv[i] * inv[i-1] % mod;
for(int i=0; i<=n; i++){
a[i] = (tmp*inv[i]+mod) % mod;
tmp *= -1;
}
for(int i=0; i<=n; i++){
if(i==0) b[i] = 1;
else if(i==1) b[i] = n + 1;
else
b[i] = (ll)(ksm(i,n+1)-1+mod)%mod*ksm(i-1,mod-2)%mod*inv[i]%mod;
}
ntt(a, 1);
ntt(b, 1);
for(int i=0; i<lim; i++)
a[i] = (ll)a[i] * b[i] % mod;
ntt(a, -1);
tmp = 1;
for(int i=0; i<=n; i++){
int qaq=(ll)tmp*jie[i]%mod;
tmp = (ll)tmp * 2 % mod;
qaq = (ll)qaq * a[i] % mod;
ans = (ans + qaq) % mod;
}
cout<<ans<<endl;
return 0;
}

最新文章

  1. virtual 修饰符与继承对析构函数的影响(C++)
  2. Apple Watch的课表应用iOS源码项目
  3. [转]SpringMVC使用@ResponseBody时返回json的日期格式、@DatetimeFormat使用注意
  4. iOS - 基础面试知识
  5. GTP (GPRS隧道协议(GPRSTunnellingProtocol))
  6. start.s 解析(一)
  7. iphone 6 设置自定义铃声(未越狱)
  8. Jmeter 使用实践 - 接口 diff 测试
  9. linux分区工具fdisk的使用
  10. PHP算法之选择排序
  11. 进入jsp页面的6种方法
  12. SQL Server2012远程访问第二个实列
  13. Keras 如何利用训练好的神经网络进行预测
  14. $(document).ready和window.onload,细微小区别,ready是jQuery的方法,onload是window的方法
  15. C#期末大作业 消消乐 2017-06-01 18:11 275人阅读 评论(0) 收藏
  16. 深圳MPD大会,五大专题一会尽享
  17. CentOS7下搭建基本LNMP环境,部署WordPress
  18. shoes的安装前后(一)
  19. redis-day1
  20. 什么是设计模式?【php】

热门文章

  1. js数字滑动时钟
  2. Vue.js(2.x)之计算属性
  3. Ubuntu 12.04搭建svn服务器【转】
  4. Linux、命令ps 各字段意思
  5. Hyper-V 2016 配置管理系列(应用篇)
  6. HDU3973 线段树 + 字符哈希
  7. Shell重启Tomcat脚本
  8. Linux 开启关闭防火墙
  9. ifup/ifdown ethX 和 ifconfig ehtX up/down的区别
  10. 初尝微信小程序2-Swiper组件、导航栏标题配置