题目

\(S(i,j)\)表示第二类斯特林数,求:
\[
f(n)=\sum _{i=0}^n\sum _{j=0}^iS(i,j)*2^j*j!
\]

分析

公式推理很简单,关键是用到了第二类斯特林数的通项公式和组合数展开的方法。
\[
\begin{aligned}
f(n)&=\sum _{i=0}^n\sum _{j=0}^iS(i,j)*2^j*j! \\
&=\sum _{i=0}^n\sum _{j=0}^n \frac{1}{j!}\sum _{k=0}^j (-1)^kC_j^k(j-k)^i*2^j*j! \\
&=\sum _{j=0}^n \frac{1}{j!}*2^j*j!\sum _{j=0}^n\sum _{k=0}^j (-1)^k \frac{j!}{k!(j-k)!} (j-k)^i \\
&=\sum _{j=0}^n 2^j*j!\sum _{k=0}^j\frac{(-1)^k}{k!}\sum _{i=0}^n\frac{(j-k)^i}{(j-k)!} \\
&=\sum _{j=0}^n 2^j*j!\sum _{k=0}^j\frac{(-1)^k}{k!}\frac{(j-k)^{n+1}-1}{(j-k)!(j-k-1)} \\
\end{aligned}
\]
令:
\[
\begin{aligned}
B(x)=\frac{(-1)^x}{x!} \\
C(x)=\frac{x^{n+1}-1}{x!(x-1)}
\end{aligned}
\]
则有:
\[
\begin{aligned}
f(n)=\sum _{j=0}^n 2^j*j!\sum _{k=0}^jB(k)C(k-j)
\end{aligned}
\]
一个卷积的形式,直接用NTT求解即可。这里要注意的是,\(C(0)=1\),因为我们在这里定义\(0^0=1\)。

代码

NTT写起来很简单,但有几个地方容易错。一定要注意把\(n\)化成整二进制的时候,\(M\)要大于\(2n\),尽管\(n\)可能本身是\(2\)的整数次幂。例如\(n=1\),这时\(M\)不能仅仅取到\(2\),而要取到\(4\)。
``` c++

include

include

include

using namespace std;
typedef long long giant;
const giant q=998244353;
const giant g=3;
const giant ig=332748118;
giant read() {
giant x=0,f=1;
char c=getchar();
for (;!isdigit(c);c=getchar()) if (c=='-') f=-1;
for (;isdigit(c);c=getchar()) x=x10+c-'0';
return x
f;
}
const giant maxn=(1<<18)+1;
const giant maxj=19;
giant a[maxn],b[maxn],c[maxn],M,xj,f[maxn],wn[maxj][2];
giant mi(giant x,giant y) {
giant ret=1;
while (y) {
if (y&1) (ret=x)%=q;
y>>=1,(x
=x)%=q;
}
return ret;
}

bzoj4555-求和的更多相关文章

  1. bzoj4555: 求和sum 快速傅立叶变换

    题目大意 给定\(S(n,m)\)表示第二类斯特林数,定义函数\(f(n)\) \[f(n) = \sum_{i=0}^n\sum_{j=0}^iS(i,j)*2^j*(j!)\] 给定正整数\(n, ...

  2. [HEOI2016/TJOI2016][bzoj4555] 求和 [斯特林数+NTT]

    题面 传送门 思路 首先,我们发现这个式子中大部分的项都和$j$有关(尤其是后面的$2^j\ast j!$),所以我们更换一下枚举方式,把这道题的枚举方式变成先$j$再$i$ $f(n)=\sum_{ ...

  3. BZOJ4555求和(cdq分治+NTT)

    题意: 输出f(n)对998244353(7 × 17 × 223 + 1)取模的结果.1 ≤ n ≤ 100000 其中S(i,j)是第二类Stirling数,即有i个球,丢到j个盒子中,要求盒子不 ...

  4. 【BZOJ4555】求和(第二类斯特林数,组合数学,NTT)

    [BZOJ4555]求和(第二类斯特林数,组合数学,NTT) 题面 BZOJ 题解 推推柿子 \[\sum_{i=0}^n\sum_{j=0}^iS(i,j)·j!·2^j\] \[=\sum_{i= ...

  5. 【BZOJ4555】求和(多种解法混合版本)

    [BZOJ4555]求和(多种解法混合版本) 题面 BZOJ 给定\(n\),求 \[f(n)=\sum_{i=0}^{n}\sum_{j=0}^{i}S(i,j)\times 2^j \times ...

  6. [BZOJ4555][TJOI2016&HEOI2016]求和(分治FFT)

    4555: [Tjoi2016&Heoi2016]求和 Time Limit: 40 Sec  Memory Limit: 128 MBSubmit: 525  Solved: 418[Sub ...

  7. [BZOJ4555 TJOI2016 HEOI2016 求和]

    ​ 第一篇博客,请大家多多关照.(鞠躬 BZOJ4555 TJOI2016 HEOI2016 求和 题意: ​ 给定一个正整数\(n\)(\(1\leqq n \leqq100000\)),求: \[ ...

  8. 【bzoj4555】[Tjoi2016&Heoi2016]求和 NTT

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

  9. 【BZOJ4555】【TJOI2016】【HEOI2016】求和

    题目 传送门 解法 我们可以用容斥来求第二类斯特林数 我们知道, 第二类斯特林数\(S(n, k)\)是\(n\)个元素放进\(k\)个无标号的盒子里, 不可以含有空的. 于是我们可以考虑可以含有空的 ...

  10. 【bzoj4555】[Tjoi2016&Heoi2016]求和(NTT+第二类斯特林数)

    传送门 题意: 求 \[ f(n)=\sum_{i=0}^n\sum_{j=0}^i\begin{Bmatrix} i \\ j \end{Bmatrix}2^jj! \] 思路: 直接将第二类斯特林 ...

随机推荐

  1. vuetify.js框架 下拉框数据改变DOM原数据未清除

    今天遇到一个奇怪的bug 需求很简单,就是将“引擎能力”下拉框选中的值作为筛选条件传入到“样本类型”下拉框中,默认“样本类型”下拉框显示所有样本类型 看图: 如图所示,功能很简单. 其实还是对vuet ...

  2. 全球订单最多的成都优步推出"南北通勤线"业务

    滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfry ...

  3. LeetCode: 31. Next Permutation (Medium)

    1. 原题链接 https://leetcode.com/problems/next-permutation/description/ 2. 题目要求 给出一个整型数组,让我们给出下一个排序情况.注意 ...

  4. Ubuntu adb 报错:no permissions (user in plugdev group; are your udev rules wrong?);

    Ubuntu 下 adb 报错: caoxinyu@caoxinyu-ThinkPad-T470p:~/Android/Sdk/platform-tools$ ./adb devices List o ...

  5. SpringCloud Eureka 服务注册与服务发现

    一.Eureka简介 spring Cloud Netflix技术栈中,Eureka作为服务注册中心对整个微服务架构起着最核心的整合作用.有了服务发现与注册,你就不需要整天改服务调用的配置文件了,你只 ...

  6. linux初学体会

    第一篇随笔,其实是为了写作业,可是老师的要求是对的,其实自己在配环境和做作业的时候也会把遇到的问题的解决方法记录下来,以便以后查找方便.这次借此将那些内容放在这里,也跟大家一起分享下. 上周六算是第二 ...

  7. 负数取余/整除,Python和C语言的不同

    总结一句:Python中负数整除,是向负无穷取整,所以导致负数取余不对 在数学公式中,两种语言的表示算法都是一样的,都是: r=a-n*[a/n] 以上,r是余数,a是被除数,n是除数. 唯一不同点, ...

  8. 使用jenkins构建一个自由风格的项目

    一.创建一个freestyle风格的构建项目 二.输入任务名称和选择任务类型 三.配置项目 3.1:选择代码托管 3.2:到gitlab上去配置deploy key 3.3:到jenkins服务器去生 ...

  9. Android 简介

    一 Android起源 android: 机器人 android是google公司开发的基于Linux2.6的免费开源操作系统 2005 Google收购 Android Inc. 开始 Dalvik ...

  10. CSP201312-2:ISBN号码

    引言:CSP(http://www.cspro.org/lead/application/ccf/login.jsp)是由中国计算机学会(CCF)发起的"计算机职业资格认证"考试, ...