传送门:CF原网 洛谷

题意:给定 $n,k$,求 $\sum\limits^n_{i=1}\dbinom{n}{i}i^k\bmod(10^9+7)$。

$1\le n\le 10^9,1\le k\le 5000$。


很水的一道题。

根据第二类斯特林数的性质:

$$n^k=\sum^k_{i=1}\begin{Bmatrix}k\\i\end{Bmatrix}i!\dbinom{n}{i}$$

那么直接套进去:

$$\sum\limits^n_{i=1}\dbinom{n}{i}\sum^k_{j=1}\begin{Bmatrix}k\\j\end{Bmatrix}j!\dbinom{i}{j}$$

$$\sum^k_{j=1}\begin{Bmatrix}k\\j\end{Bmatrix}j!\sum\limits^n_{i=j}\dbinom{n}{i}\dbinom{i}{j}$$

$$\sum^k_{j=1}\begin{Bmatrix}k\\j\end{Bmatrix}j!\sum\limits^n_{i=j}\dfrac{n!}{i!(n-i)!}\dfrac{i!}{j!(i-j)!}$$

$$\sum^k_{j=1}\begin{Bmatrix}k\\j\end{Bmatrix}j!\sum\limits^n_{i=j}\dfrac{n!}{(n-i)!}\dfrac{1}{j!(i-j)!}$$

$$\sum^k_{j=1}\begin{Bmatrix}k\\j\end{Bmatrix}j!\sum\limits^n_{i=j}\dfrac{n!}{j!(n-j)!}\dfrac{(n-j)!}{(n-i)!(i-j)!}$$

$$\sum^k_{j=1}\begin{Bmatrix}k\\j\end{Bmatrix}j!\sum\limits^n_{i=j}\dbinom{n}{j}\dbinom{n-j}{i-j}$$

$$\sum^k_{j=1}\begin{Bmatrix}k\\j\end{Bmatrix}j!\dbinom{n}{j}\sum\limits^n_{i=j}\dbinom{n-j}{i-j}$$

$$\sum^k_{j=1}\begin{Bmatrix}k\\j\end{Bmatrix}j!\dbinom{n}{j}\sum\limits^{n-j}_{i=0}\dbinom{n-j}{i}$$

$$\sum^k_{j=1}\begin{Bmatrix}k\\j\end{Bmatrix}j!\dbinom{n}{j}2^{n-j}$$

如果我们知道了所有的 $\begin{Bmatrix}k\\j\end{Bmatrix}$ 那么这个式子可以做到 $O(k\log n)$。

而预处理这些斯特林数可以用 $k^2$ 递推,当然也可以用卷积做到 $k\log k$。

由于本题 $k^2$ 已经足够,而且模数不友好,直接递推就好了。

时间复杂度 $O(k^2+k\log n)$。

#include<bits/stdc++.h>
using namespace std;
const int mod=;
#define FOR(i,a,b) for(int i=(a);i<=(b);i++)
#define ROF(i,a,b) for(int i=(a);i>=(b);i--)
#define MEM(x,v) memset(x,v,sizeof(x))
inline int read(){
int x=,f=;char ch=getchar();
while(ch<'' || ch>'') f|=ch=='-',ch=getchar();
while(ch>='' && ch<='') x=x*+ch-'',ch=getchar();
return f?-x:x;
}
int n,k,S[][];
inline int qpow(int a,int b){
int ans=;
for(;b;b>>=,a=1ll*a*a%mod) if(b&) ans=1ll*ans*a%mod;
return ans;
}
int main(){
n=read();k=read();
S[][]=;
FOR(i,,k) FOR(j,,i) S[i][j]=(S[i-][j-]+1ll*S[i-][j]*j)%mod;
int c=,f=,ans=;
FOR(i,,min(n,k)){
c=1ll*c*(n-i+)%mod*qpow(i,mod-)%mod;
f=1ll*f*i%mod;
ans=(ans+1ll*c*S[k][i]%mod*f%mod*qpow(,n-i))%mod;
}
printf("%d\n",ans);
}

CF932E Team Work(第二类斯特林数)的更多相关文章

  1. CF932E Team Work(第二类斯特林数)

    题目 CF932E Team Work 前置:斯特林数\(\Longrightarrow\)点这里 做法 \[\begin{aligned}\\ &\sum\limits_{i=1}^n C_ ...

  2. CF932E Team Work——第二类斯特林数

    题解 n太大,而k比较小,可以O(k^2)做 想方设法争取把有关n的循环变成O(1)的式子 考虑用公式: 来替换i^k 原始的组合数C(n,i)一项,考虑能否和后面的系数分离开来,直接变成2^n处理. ...

  3. Codeforces 932 E Team Work ( 第二类斯特林数、下降阶乘幂、组合数学 )

    题目链接 题意 : 其实就是要求 分析 : 先暴力将次方通过第二类斯特林数转化成下降幂 ( 套路?) 然后再一步步化简.使得最外层和 N 有关的 ∑ 划掉 这里有个技巧就是 将组合数的表达式放到一边. ...

  4. 【CF932E】Team Work(第二类斯特林数)

    [CF932E]Team Work(第二类斯特林数) 题面 洛谷 CF 求\(\sum_{i=1}^nC_{n}^i*i^k\) 题解 寒假的时候被带飞,这题被带着写了一遍.事实上并不难,我们来颓柿子 ...

  5. 【cf932E】E. Team Work(第二类斯特林数)

    传送门 题意: 求\(\displaystyle \sum_{i=0}^n{n\choose i}i^k,n\leq 10^9,k\leq 5000\). 思路: 将\(i^k\)用第二类斯特林数展开 ...

  6. Gym - 101147G G - The Galactic Olympics —— 组合数学 - 第二类斯特林数

    题目链接:http://codeforces.com/gym/101147/problem/G G. The Galactic Olympics time limit per test 2.0 s m ...

  7. 【BZOJ5093】图的价值(第二类斯特林数,组合数学,NTT)

    [BZOJ5093]图的价值(第二类斯特林数,组合数学,NTT) 题面 BZOJ 题解 单独考虑每一个点的贡献: 因为不知道它连了几条边,所以枚举一下 \[\sum_{i=0}^{n-1}C_{n-1 ...

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

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

  9. HDU - 4625 JZPTREE(第二类斯特林数+树DP)

    https://vjudge.net/problem/HDU-4625 题意 给出一颗树,边权为1,对于每个结点u,求sigma(dist(u,v)^k). 分析 贴个官方题解 n^k并不好转移,于是 ...

随机推荐

  1. Access使用记录

    iif函数 此函数类似编程语言中的双目运算符,官方解释如下: 在任何可以使用表达式的位置均可使用 IIf.您可以使用 IIf 确定另一个表达式为 True 还是 False.如果表达式为 True,则 ...

  2. ShowDoc上手

    ShowDoc是什么 每当接手一个他人开发好的模块或者项目,看着那些没有写注释的代码,我们都无比抓狂.文档呢?!文档呢?!Show me the doc !! 程序员都很希望别人能写技术文档,而自己却 ...

  3. 关于百度地图API和jqGrid踩到的坑

    1.百度地图重新标记问题 var map = new BMap.Map("map"); ...... var marker = new BMap.Marker(point); // ...

  4. RESTful架构详解

    什么是REST REST全称是Representational State Transfer,中文意思是表述性状态转移,它首次出现在2000年Roy Fielding的博士论文中.Roy Fieldi ...

  5. 3 HTTP 协议

    1 什么是HTTP 协议 HTTP (HyperText Transfer Protocol),即超文本传输协议, 17年以前互联网上应用最广泛的协议,之后所有网站都开始使用HTTPS协议(基于HTT ...

  6. Azure系列2.1.14 —— CopyState

    (小弟自学Azure,文中有不正确之处,请路过各位大神指正.) 网上azure的资料较少,尤其是API,全是英文的,中文资料更是少之又少.这次由于公司项目需要使用Azure,所以对Azure的一些学习 ...

  7. Python2.7从入门到精通

    快速入门 1.程序输出print语句 (1)使用print语句可查看对象的值:在交互式解释器使用对象本身则输出此对象的字符串表示: (2)使用print语句调用str()显示对象:在交互式解释器使用对 ...

  8. Java使用RabbitMQ之消息确认(confirm模板)

    RabbitMQ生产者消息确认Confirm模式,分为普通模式.批量模式和异步模式,本次举例为普通模式. 源码: package org.study.confirm4; import com.rabb ...

  9. @ControllerAdvice + @ExceptionHandler 全局处理 Controller 层异常==》记录

    对于与数据库相关的 Spring MVC 项目,我们通常会把 事务 配置在 Service层,当数据库操作失败时让 Service 层抛出运行时异常,Spring 事物管理器就会进行回滚. 如此一来, ...

  10. Nginx 缓存针对打开的文件句柄与原文件信息

    L:108 open_file_cache syntax: open_file_cache off;   open_file_cache max=N[inactive=time](inactive表示 ...