原题传送门

\[\begin{aligned} a n s &=\sum_{i=0}^{n} \sum_{j=0}^{i}\left\{\begin{array}{c}{i} \\
{j}\end{array}\right\} 2^{j} \times j ! \\
&=\sum_{i=0}^{n} \sum_{j=0}^{n}\left\{\begin{array}{c}{i} \\
{j}\end{array}\right\} 2^{j} \times j ! \\
&=\sum_{j=0}^{n} 2^{j} \times j ! \sum_{i=0}^{n}\left\{\begin{array}{c}{i} \\ {j}\end{array}\right\} \\
&=\sum_{j=0}^{n} 2^{j} \times j ! \sum_{i=0}^n(\frac{1}{j !} \sum_{k=0}^j(-1)^k \tbinom{j}{k} (j-k)^i) \\
&=\sum_{j=0}^{n} 2^{j} \times j ! \sum_{i=0}^{n} \sum_{k=0}^{j} \frac{(-1)^{k}}{k !} \cdot \frac{(j-k)^{i}}{(j-k) !}
\\ &=\sum_{j=0}^{n} 2^{j} \times j ! \sum_{k=0}^{j} \frac{(-1)^{k}}{k !} \cdot \frac{(j-k)^{n+1}-1}{(j-k-1)(j-k) !} \end{aligned}\]

这就是一个很明显的卷积形式,NTT求一下即可

要注意一下最后一步,因为用了等比数列求和,所以\(1\)要特判

  1. #include <bits/stdc++.h>
  2. #define N 100005
  3. #define mod 998244353
  4. #define G 3
  5. #define getchar nc
  6. using namespace std;
  7. inline char nc(){
  8. static char buf[100000],*p1=buf,*p2=buf;
  9. return p1==p2&&(p2=(p1=buf)+fread(buf,1,100000,stdin),p1==p2)?EOF:*p1++;
  10. }
  11. inline int read()
  12. {
  13. register int x=0,f=1;register char ch=getchar();
  14. while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
  15. while(ch>='0'&&ch<='9')x=(x<<3)+(x<<1)+ch-'0',ch=getchar();
  16. return x*f;
  17. }
  18. inline void write(register int x)
  19. {
  20. if(!x)putchar('0');if(x<0)x=-x,putchar('-');
  21. static int sta[20];register int tot=0;
  22. while(x)sta[tot++]=x%10,x/=10;
  23. while(tot)putchar(sta[--tot]+48);
  24. }
  25. inline int power(register int a,register int b)
  26. {
  27. int res=1;
  28. while(b)
  29. {
  30. if(b&1)
  31. res=1ll*res*a%mod;
  32. a=1ll*a*a%mod;
  33. b>>=1;
  34. }
  35. return res;
  36. }
  37. int n,fac[N],invf[N],f[N<<2],g[N<<2],R[N<<2],ans;
  38. inline void NTT(register int *a,register int n,register int f)
  39. {
  40. for(register int i=0;i<n;++i)
  41. if(i<R[i])
  42. swap(a[i],a[R[i]]);
  43. for(register int i=1;i<n;i<<=1)
  44. {
  45. int T=power(G,(mod-1)/(i<<1));
  46. if(f==-1)
  47. T=power(T,mod-2);
  48. for(register int j=0;j<n;j+=(i<<1))
  49. {
  50. int t=1;
  51. for(register int k=0;k<i;++k,t=1ll*t*T%mod)
  52. {
  53. int Nx=a[j+k],Ny=1ll*t*a[i+j+k]%mod;
  54. a[j+k]=(0ll+Nx+Ny)%mod;
  55. a[i+j+k]=(0ll+Nx-Ny+mod)%mod;
  56. }
  57. }
  58. }
  59. }
  60. int main()
  61. {
  62. n=read();
  63. fac[0]=fac[1]=1;
  64. for(register int i=2;i<=n;++i)
  65. fac[i]=1ll*fac[i-1]*i%mod;
  66. invf[n]=power(fac[n],mod-2);
  67. for(register int i=n-1;i>=0;--i)
  68. invf[i]=1ll*invf[i+1]*(i+1)%mod;
  69. for(register int i=0;i<=n;++i)
  70. f[i]=1ll*(i&1?mod-1:1)*invf[i]%mod;
  71. for(register int i=0;i<=n;++i)
  72. g[i]=1ll*(power(i,n+1)+mod-1)*power(i-1<0?i+mod-1:i-1,mod-2)%mod*invf[i]%mod;
  73. g[1]=n+1;
  74. int lim=1,ct=0;
  75. while(lim<n<<1)
  76. lim<<=1,++ct;
  77. for(register int i=0;i<lim;++i)
  78. R[i]=(R[i>>1]>>1)|((i&1)<<(ct-1));
  79. NTT(f,lim,1),NTT(g,lim,1);
  80. for(register int i=0;i<lim;++i)
  81. f[i]=1ll*f[i]*g[i]%mod;
  82. NTT(f,lim,-1);
  83. int inv=power(lim,mod-2);
  84. for(register int i=0;i<=n;++i)
  85. ans=(0ll+ans+1ll*power(2,i)*fac[i]%mod*f[i]%mod*inv%mod)%mod;
  86. write(ans);
  87. return 0;
  88. }

【题解】Luogu P4091 [HEOI2016/TJOI2016]求和的更多相关文章

  1. 【题解】P4091 [HEOI2016/TJOI2016]求和

    [题解]P4091 [HEOI2016/TJOI2016]求和 [P4091 HEOI2016/TJOI2016]求和 可以知道\(i,j\)从\(0\)开始是可以的,因为这个时候等于\(0\).这种 ...

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

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

  3. luogu P4091 [HEOI2016/TJOI2016]求和

    传送门 这一类题都要考虑推式子 首先,原式为\[f(n)=\sum_{i=0}^{n}\sum_{j=0}^{i}S(i,j)*2^j*j!\] 可以看成\[f(n)=\sum_{j=0}^{n}2^ ...

  4. 洛谷 P4091 [HEOI2016/TJOI2016]求和 解题报告

    P4091 [HEOI2016/TJOI2016]求和 题目描述 在2016年,佳媛姐姐刚刚学习了第二类斯特林数,非常开心. 现在他想计算这样一个函数的值: \[ f(n)=\sum_{i=0}^n\ ...

  5. [洛谷P4091][HEOI2016/TJOI2016]求和

    题目大意:给你$n(n\leqslant10^5)$,求:$$\sum\limits_{i=0}^n\sum\limits_{j=0}^i\begin{Bmatrix}i\\j\end{Bmatrix ...

  6. Luogu 4091 [HEOI2016/TJOI2016]求和

    BZOJ 4555 一道模板题. 第二类斯特林数有公式: $$S(n, m) = \frac{1}{m!}\sum_{i = 0}^{m}(-1)^i\binom{m}{i}(m - i)^n$$ 考 ...

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

  8. P4091 [HEOI2016/TJOI2016]求和

    留待警戒 FFT的时候长度要写的和函数里一样啊XD 瞎扯 这是个第二类斯特林数的理性愉悦颓柿子题目 颓柿子真的是让我hi到不行啦(才没有) 前置芝士 一个公式 \[ \sum_{i=0}^n t^i ...

  9. 【LG4091】[HEOI2016/TJOI2016]求和

    [LG4091][HEOI2016/TJOI2016]求和 题面 要你求: \[ \sum_{i=0}^n\sum_{j=0}^iS(i,j)*2^j*j! \] 其中\(S\)表示第二类斯特林数,\ ...

随机推荐

  1. How to prove that SAP CRM WebUI is a stateful application

    I create an enhancement in this function module to print out current session id: As long as I do not ...

  2. linux下使用selenium

    安装chromedriver 1.安装chrome 用下面的命令安装最新的 Google Chrome yum install https://dl.google.com/linux/direct/g ...

  3. pgsql主备搭建及切换

    二.主从搭建 2.1测试目标 测试postgresql主从搭建安装过程 2.2环境准备 实例级别的复制 流复制主库可读写,但从库只允许查询不允许写人, 而逻辑复制的从库可读写 流复制实验环境 主机 主 ...

  4. CDH报错:ScmActive at bootup: Failed to validate the identity of Cloudera Manager.

    报错原因以及解决办法在官网: https://www.cloudera.com/documentation/enterprise/5-8-x/topics/cm_failover_db.html 1. ...

  5. Nginx 反向代理功能-实现Nginx tcp负载均衡

    Nginx 反向代理功能-实现Nginx tcp负载均衡 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.

  6. 什么是amp?amp有什么用处?

    AMP是移动页面加速器Accelerated Mobile Pages的简称,是Google带领开发的开源项目,目的是为提升移动设备对网站的访问速度.它的核心称作AMP HTML,是一种新型的HTML ...

  7. 12-C#笔记-可空类型

    区别于C++,C#定义的NULL和0不同.更严格. C#的基本类型,区分为可空和不可空 主要涉及两个符号 单问号? 双问号?? 示例如下: using System; namespace Calcul ...

  8. 排序算法-冒泡排序(Java)

    package com.rao.sort; import java.util.Arrays; /** * @author Srao * @className BubbleSort * @date 20 ...

  9. LeetCode 1034. Coloring A Border

    原题链接在这里:https://leetcode.com/problems/coloring-a-border/ 题目: Given a 2-dimensional grid of integers, ...

  10. Windbg Command Browser(命令浏览器)窗口的使用

    命令浏览器窗口显示并存储调试器命令的文本结果.此窗口创建命令引用,使您可以查看特定命令的结果,而无需重新输入该命令.命令浏览器窗口还提供了对存储的命令的导航,因此您可以比使用调试器命令窗口更快地访问命 ...