zoukankan      html  css  js  c++  java
  • [CF932E]Team Work

    题意

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


    思考?

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

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


    代码

     1 #include<bits/stdc++.h>
     2 #define mod 1000000007
     3 using namespace std;
     4 typedef long long int ll;
     5 const int maxn=5E3+5;
     6 ll n,k,ans,S[maxn][maxn];
     7 inline ll qpow(ll x,ll y)
     8 {
     9     ll ans=1,base=x;
    10     while(y)
    11     {
    12         if(y&1)
    13             ans=ans*base%mod;
    14         base=base*base%mod;
    15         y>>=1;
    16     }
    17     return ans;
    18 }
    19 void init()
    20 {
    21     S[0][0]=1;
    22     for(int i=1;i<=k;++i)
    23         for(int j=1;j<=k;++j)
    24             S[i][j]=(S[i-1][j-1]+S[i-1][j]*(ll)j)%mod;
    25 }
    26 int main()
    27 {
    28     ios::sync_with_stdio(false);
    29     cin>>n>>k;
    30     init();
    31     ll now=1;
    32     for(int i=0;i<=min(n,k);++i)
    33     {
    34         ans=(ans+S[k][i]*now%mod*qpow(2,n-i)%mod)%mod;
    35         now=now*(n-i)%mod;
    36     }
    37     if(k==0)
    38         --ans;
    39     cout<<ans<<endl;
    40     return 0;
    41 }
    View Code
  • 相关阅读:
    Alpha冲刺——第六天
    Alpha冲刺——第五天
    第一次课 圆面积
    计算器第四次作业
    计算器稍微小结
    附加作业3
    2016寒假训练4
    2016寒假训练3
    第三次作业
    2016寒假训练2
  • 原文地址:https://www.cnblogs.com/GreenDuck/p/11409354.html
Copyright © 2011-2022 走看看