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
  • 相关阅读:
    函数嵌套
    函数对象
    可变长参数
    函数的参数
    函数的调用
    函数的返回值
    定义函数的三种形式
    函数的定义
    SQLAlchemy
    Flask总结完整版
  • 原文地址:https://www.cnblogs.com/GreenDuck/p/11409354.html
Copyright © 2011-2022 走看看