首页 > 其他 > 详细

[CF932E]Team Work

时间:2019-08-26 08:57:12      阅读:108      评论:0      收藏:0      [点我收藏+]

题意

求$\sum_{i=1}^{n}{C(n,i)*i^k}$,其中$n \leq 10^9 ,k \leq 5000$。


 

思考?

看到$i^k$,k那么小,直接第二类斯特林数。比较简单,就请允许我鸽了吧。

刚开始还想BM,当然T了。


 

代码

技术分享图片
 1 // luogu-judger-enable-o2
 2 #include<bits/stdc++.h>
 3 #define mod 1000000007
 4 using namespace std;
 5 typedef long long int ll;
 6 const int maxn=5E3+5;
 7 ll n,k,ans,S[maxn][maxn];
 8 inline ll qpow(ll x,ll y)
 9 {
10     ll ans=1,base=x;
11     while(y)
12     {
13         if(y&1)
14             ans=ans*base%mod;
15         base=base*base%mod;
16         y>>=1;
17     }
18     return ans;
19 }
20 void init()
21 {
22     S[0][0]=1;
23     for(int i=1;i<=k;++i)
24         for(int j=1;j<=k;++j)
25             S[i][j]=(S[i-1][j-1]+S[i-1][j]*(ll)j)%mod;
26 }
27 int main()
28 {
29     ios::sync_with_stdio(false);
30     cin>>n>>k;
31     init();
32     ll now=1;
33     for(int i=0;i<=k;++i)
34     {
35         ans=(ans+S[k][i]*now%mod*qpow(2,n-i)%mod)%mod;
36         now=now*(n-i)%mod;
37     }
38     if(k==0)
39         --ans;
40     cout<<ans<<endl;
41     return 0;
42 }
View Code

 

[CF932E]Team Work

原文:https://www.cnblogs.com/GreenDuck/p/11409354.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!