zoukankan      html  css  js  c++  java
  • CF932E

    斯特林数好题:

    求$sum_{i=1}^{n}C_{n}^{i}i^{k}$

    首先第二类斯特林数有一个性质:

    $x^{n}=sum_{i=0}^{n}S_{2}(n,i)C_{x}^{i}i!$

    那么我们展开原来的表达式,得到:

    $sum_{i=1}^{n}C_{n}^{i}i^{k}$=$sum_{i=0}^{n}C_{n}^{i}i^{k}$=$sum_{i=0}^{n}C_{n}^{i}sum_{j=0}^{k}S_{2}(k,j)C_{i}^{j}j!$

    整理一下后面的式子,顺便展开组合数,得到:

    $sum_{i=0}^{n}frac{n!}{i!(n-i)!}sum_{j=0}^{k}S_{2}(k,j)frac{i!}{j!(i-j)!}j!$

    立刻能继续整理:

    $sum_{i=0}^{n}frac{n!}{(n-i)!}sum_{j=0}^{k}S_{2}(k,j)frac{1}{(i-j)!}$

    调整一下枚举顺序:

    $sum_{j=0}^{k}S_{2}(k,j)sum_{i=0}^{n}frac{n!}{(n-i)!(i-j)!}$

    再补一项:

    $sum_{j=0}^{k}S_{2}(k,j)sum_{i=0}^{n}frac{n!}{(n-i)!(i-j)!}frac{(n-j)!}{(n-j)!}$

    这样就可以整理出一个组合数:

    $sum_{j=0}^{k}S_{2}(k,j)sum_{i=0}^{n}frac{n!}{(n-j)!}frac{(n-j)!}{(n-i)!(i-j)!}$

    也就是:

    $sum_{j=0}^{k}S_{2}(k,j)sum_{i=0}^{n}frac{n!}{(n-j)!}C_{n-j}^{n-i}$

    再提一项出来:

    $sum_{j=0}^{k}S_{2}(k,j)frac{n!}{(n-j)!}sum_{i=0}^{n}C_{n-j}^{n-i}$

    后面那个求和式发现是对杨辉三角的某一行求和,根据结论,有:

    $sum_{j=0}^{k}S_{2}(k,j)frac{n!}{(n-j)!}2^{n-j}$

    这就可以算了

    第二类斯特林数递推式:$S_{2}(i,j)=S_{2}(i-1,j-1)+jS_{2}(i-1,j)$

    代码:

    #include <cstdio>
    #include <cmath>
    #include <cstring>
    #include <cstdlib>
    #include <iostream>
    #include <algorithm>
    #include <queue>
    #include <stack>
    #define ll long long
    using namespace std;
    const ll mode=1000000007;
    ll S[5005][5005];
    int n,k;
    ll pow_mul(ll x,ll y)
    {
        ll ret=1;
        while(y)
        {
            if(y&1)ret=ret*x%mode;
            x=x*x%mode,y>>=1;
        }
        return ret;
    }
    int main()
    {
        scanf("%d%d",&n,&k);
        S[0][0]=1;
        for(int i=1;i<=k;i++)for(int j=1;j<=i;j++)S[i][j]=(j*S[i-1][j]+S[i-1][j-1])%mode;
        ll las=1,mul=pow_mul(2,n),inv=(mode+1)>>1;
        ll ans=0;
        for(int i=0;i<=k;i++)
        {
            ans=(ans+S[k][i]*las%mode*mul%mode)%mode;
            las=las*(n-i)%mode;
            mul=mul*inv%mode;
        }
        printf("%lld
    ",ans);
        return 0;
    } 
  • 相关阅读:
    3Sum
    Longest Common Prefix
    Integer to Roman
    Roman to Integer
    Container With Most Water
    String to Integer (atoi)
    Regular Expression Matching
    codeforces-873C. Strange Game On Matrix[模拟]
    hdu-5927 Auxiliary Set
    Codeforces-869 C. The Intriguing Obsession [组合数学]
  • 原文地址:https://www.cnblogs.com/zhangleo/p/11064921.html
Copyright © 2011-2022 走看看