题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4555

关于第二类斯特林数:https://www.cnblogs.com/Wuweizheng/p/8638858.html

关于这道题:https://blog.csdn.net/werkeytom_ftd/article/details/51909966

把 ∑i 移到后面那一步很不错,在后面就是个等比数列求和,就消去一个 O(n) 了;

注意等比数列求和公式当 q=1 时不适用。

代码如下:

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
typedef long long ll;
int const xn=(<<),mod=;
int n,a[xn],b[xn],lim,rev[xn],jc[xn],jcn[xn];
int upt(int x){while(x>=mod)x-=mod; while(x<)x+=mod; return x;}
ll pw(ll a,int b)
{
ll ret=; a=upt(a%mod);
for(;b;b>>=,a=(a*a)%mod)if(b&)ret=(ret*a)%mod;
return ret;
}
void init()
{
jc[]=;
for(int i=;i<=n;i++)jc[i]=(ll)jc[i-]*i%mod;
jcn[n]=pw(jc[n],mod-);
for(int i=n-;i>=;i--)jcn[i]=(ll)jcn[i+]*(i+)%mod;
}
void ntt(int *a,int tp)
{
for(int i=;i<lim;i++)
if(i<rev[i])swap(a[i],a[rev[i]]);
for(int mid=;mid<lim;mid<<=)
{
int len=(mid<<),wn=pw(,tp==?(mod-)/len:(mod-)-(mod-)/len);
for(int j=;j<lim;j+=len)
for(int k=,w=;k<mid;k++,w=(ll)w*wn%mod)
{
int x=a[j+k],y=(ll)w*a[j+mid+k]%mod;
a[j+k]=upt(x+y); a[j+mid+k]=upt(x-y);
}
}
if(tp==)return; int inv=pw(lim,mod-);
for(int i=;i<lim;i++)a[i]=(ll)a[i]*inv%mod;
}
int main()
{
scanf("%d",&n);
lim=; int l=;
while(lim<=n+n)lim<<=,l++;
for(int i=;i<lim;i++)rev[i]=((rev[i>>]>>)|((i&)<<(l-)));
init();
for(int i=,t=;i<=n;i++,t=-t)a[i]=upt(t*jcn[i]);
for(int i=;i<=n;i++)
{
if(i==)b[i]=(ll)(n+)*jcn[i]%mod;//!!
else b[i]=upt((ll)(-pw(i,n+))*pw(-i,mod-)%mod*jcn[i]%mod);
}
ntt(a,); ntt(b,);
for(int i=;i<lim;i++)a[i]=(ll)a[i]*b[i]%mod;
ntt(a,-);
int ans=;
for(int i=,bin=,fac=;i<=n;i++,bin=upt(bin<<),fac=(ll)fac*i%mod)
ans=upt(ans+ (ll)bin*fac%mod*a[i]%mod);
printf("%d\n",ans);
return ;
}

最新文章

  1. zookeeper原理解析-选举
  2. lambda表达式-转载
  3. Linux 基础笔记
  4. nginx 配置rewrite 笔记
  5. 微软官方网站线上兼容测试平台-Browser screenshots
  6. 数学+dp HDOJ 5317 RGCDQ
  7. 数组工具类 - ArrayUtil.java
  8. 李洪强iOS开发之Foundation框架—结构体
  9. java中什么时候该用static修饰方法?有什么好处或者坏处?
  10. the assignment of reading paper
  11. java新手笔记17 参数
  12. Rundeck,RUN起来!!
  13. mysql 添加用户并授权(记录)
  14. switch条件语句规则
  15. static class - 静态类
  16. Java微信公众平台开发之扫码支付模式一
  17. Python内置函数(41)——id
  18. CSS3 transform-origin 属性
  19. python---memcache使用操作
  20. java抽象类与接口回顾

热门文章

  1. js中insertAdjacentHTML的玩法
  2. python爬虫入门篇
  3. iOS开发 viewWillAppear:(BOOL)animated真机调试的时候不执行了怎么办
  4. 【BZOJ3997】[TJOI2015]组合数学 最长反链
  5. IE浏览器的判断
  6. ArcGIS api for javascript 离线部署
  7. 九度OJ 1007:奥运排序问题 (排序)
  8. 【题解】 AT2134 Zigzag MST
  9. ubuntu安装opencv(自己编译)
  10. git功能速查