题目大意

  求\(f(n)=\sum_{i=0}^n\sum_{j=0}^i2^j\times j!\times S(i,j)\\\)

  对\(998244353\)取模

  

  \(n\leq 100000\)。

题解

\[\begin{align}
S(n,k)&=\frac1{k!}\sum_{i=0}^k{(-1)}^i\binom{k}{i}{(k-i)}^n\\
&=\frac1{k!}\sum_{i=0}^k{(-1)}^i\frac{k!}{i!(k-i)!}(k-i)^n\\
&=\sum_{i=0}^k\frac{{(-1)}^i}{i!}\frac{{(k-i)}^n}{(k-i)!}
\end{align}
\]

  因为\(S(i,j)=0~(i<j)\),所以

\[\begin{align}
f(n)&=\sum_{i=0}^n\sum_{j=0}^n2^j\times j!\times S(i,j)\\
&=\sum_{j=0}^n2^j\times j!\times\sum_{i=0}^nS(i,j)\\
&=\sum_{j=0}^n2^j\times j!\times\sum_{i=0}^n\sum_{l=0}^j\frac{{(-1)}^i}{l!}\frac{{(j-l)}^i}{(j-l)!}\\
&=\sum_{j=0}^n2^j\times j!\times\sum_{l=0}^j\frac{{(-1)}^i}{l!}\sum_{i=0}^n\frac{{(j-l)}^i}{(j-l)!}
\end{align}
\]

  设

\[A(x)=\frac{{(-1)}^i}{i!},B(x)=\sum_{i=0}^n\frac{x^i}{x!}
\]

  所以

\[B(x)=\frac{x^{n+1}-1}{x!(x-1)}
\]

\[f(n)=\sum_{j=0}^n2^j\times j!\times \sum_{i=0}^jA(i)B(j-i)
\]

  直接上NTT

  时间复杂度:\(O(n\log n)\)

代码

#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cstdlib>
#include<ctime>
#include<utility>
using namespace std;
typedef long long ll;
typedef pair<int,int> pii;
ll p=998244353;
ll fp(ll a,ll b)
{
ll s=1;
while(b)
{
if(b&1)
s=s*a%p;
a=a*a%p;
b>>=1;
}
return s;
}
namespace ntt
{
ll w1[1000010];
ll w2[1000010];
int rev[1000010];
int n;
void init()
{
n=262144;
int i;
for(i=2;i<=n;i<<=1)
{
w1[i]=fp(3,(p-1)/i);
w2[i]=fp(w1[i],p-2);
}
rev[0]=0;
for(i=1;i<n;i++)
rev[i]=(rev[i>>1]>>1)|(i&1?n>>1:0);
}
void ntt(ll *a,int t)
{
int i,j,k;
ll w,wn,u,v;
for(i=0;i<n;i++)
if(rev[i]<i)
swap(a[i],a[rev[i]]);
for(i=2;i<=n;i<<=1)
{
wn=(t==1?w1[i]:w2[i]);
for(j=0;j<n;j+=i)
{
w=1;
for(k=j;k<j+i/2;k++)
{
u=a[k];
v=a[k+i/2]*w%p;
a[k]=(u+v)%p;
a[k+i/2]=(u-v+p)%p;
w=w*wn%p;
}
}
}
if(t==-1)
{
ll inv=fp(n,p-2);
for(i=0;i<n;i++)
a[i]=a[i]*inv%p;
}
}
};
ll a[500010];
ll b[500010];
ll fac[200010];
int main()
{
ntt::init();
int n;
scanf("%d",&n);
int i;
fac[0]=1;
for(i=1;i<=n;i++)
fac[i]=fac[i-1]*i%p;
a[0]=1;
for(i=1;i<=n;i++)
a[i]=(((i&1?-1:1)*fp(fac[i],p-2))%p+p)%p;
b[0]=1;
b[1]=n+1;
for(i=2;i<=n;i++)
b[i]=((fp(i,n+1)-1)*fp(fac[i]*(i-1)%p,p-2)%p+p)%p;
ntt::ntt(a,1);
ntt::ntt(b,1);
for(i=0;i<ntt::n;i++)
a[i]=a[i]*b[i]%p;
ntt::ntt(a,-1);
ll ans=0;
for(i=0;i<=n;i++)
ans=(ans+fp(2,i)*fac[i]%p*a[i]%p)%p;
printf("%lld\n",ans);
return 0;
}

【BZOJ4555】【TJOI2016】【HEOI2016】求和 第二类斯特林数 NTT的更多相关文章

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

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

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

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

  3. BZOJ4555 [Tjoi2016&Heoi2016]求和 【第二类斯特林数 + NTT】

    题目 在2016年,佳媛姐姐刚刚学习了第二类斯特林数,非常开心. 现在他想计算这样一个函数的值: S(i, j)表示第二类斯特林数,递推公式为: S(i, j) = j ∗ S(i − 1, j) + ...

  4. 【BZOJ4555】【TJOI2016】【HEOI2016】求和 (第二类斯特林数+NTT卷积)

    Description 在2016年,佳媛姐姐刚刚学习了第二类斯特林数,非常开心. 现在他想计算这样一个函数的值: $$f(n)=\sum_{i=0}^n\sum_{j=0}^i S(i,j)\tim ...

  5. 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! ...

  6. BZOJ5093 [Lydsy1711月赛]图的价值 【第二类斯特林数 + NTT】

    题目链接 BZOJ5093 题解 点之间是没有区别的,所以我们可以计算出一个点的所有贡献,然后乘上\(n\) 一个点可能向剩余的\(n - 1\)个点连边,那么就有 \[ans = 2^{{n - 1 ...

  7. bzoj 5093 图的价值 —— 第二类斯特林数+NTT

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=5093 每个点都是等价的,从点的贡献来看,得到式子: \( ans = n * \sum\li ...

  8. bzoj5093:图的价值(第二类斯特林数+NTT)

    传送门 首先,题目所求为\[n\times 2^{C_{n-1}^2}\sum_{i=0}^{n-1}C_{n-1}^ii^k\] 即对于每个点\(i\),枚举它的度数,然后计算方案.因为有\(n\) ...

  9. BZOJ 5093: [Lydsy1711月赛]图的价值 第二类斯特林数+NTT

    定义有向图的价值为图中每一个点的度数的 \(k\) 次方之和. 求:对于 \(n\) 个点的无向图所有可能情况的图的价值之和. 遇到这种题,八成是每个点单独算贡献,然后累加起来. 我们可以枚举一个点的 ...

随机推荐

  1. nginx 之 proxy_redirect详解

    proxy_redirect 语法:proxy_redirect [ default|off|redirect replacement ]  默认值:proxy_redirect default  使 ...

  2. codeforces#580 D. Kefa and Dishes(状压dp)

    题意:有n个菜,每个菜有个兴奋值,并且如果吃饭第i个菜立即吃第j个菜,那么兴奋值加ma[i][j],求吃m个菜的最大兴奋值,(n<=18) 分析:定义dp[status][last],statu ...

  3. Divide by three, multiply by two CodeForces - 977D (思维排序)

    Polycarp likes to play with numbers. He takes some integer number xx, writes it down on the board, a ...

  4. 后台管理系统之邮件开发(Java实现)

    一,功能点 后台管理系统,添加用户时.对注册的新用户邮箱发送初始密码. 二,代码实现 1.Mail实体类 public class Mail { private Set<String> r ...

  5. Nginx Configuring HTTPS servers

    Configuring HTTPS servershttp://nginx.org/en/docs/http/configuring_https_servers.html Configuring HT ...

  6. 【Python3练习题 020】 求1+2!+3!+...+20!的和

    方法一 import functools   sum = 0 for i in range(1,21):     sum = sum + functools.reduce(lambda x,y: x* ...

  7. C# DataTable详解

    添加引用 using System.Data; 创建表 //创建一个空表 DataTable dt = new DataTable(); //创建一个名为"Table_New"的空 ...

  8. [转帖]HTTP 头部解释

    HTTP 头部解释 https://www.cnblogs.com/poissonnotes/p/4844014.html 之前看的太粗了 同事闻起来 referer 才知道自己所知甚少.. ==== ...

  9. [转帖] BMC安全隐患

    BMC再现漏洞,裸金属云服务器岌岌可危 https://zhuanlan.kanxue.com/article-8006.htm 之前有vt-x 可能有隐患 现在看起来BMC 也就是IPMI 也有隐患 ...

  10. 【学亮IT手记】使用Map代替switch...case语句