• CF932 E. Team Work 结题报告


    CF932 E. Team Work

    题意

    [sum_{i=0}^ninom{n}{i}i^k ]

    其中(nle 10^9,kle 5000),对(mod=998244353)取模


    事实证明我斯特林数学到狗身上去了...

    关于斯特林数的一个常用公式是

    [x^n=sum_{i=1}^xinom{x}{i}{n race i}i! ]

    然后带进去推一波式子就完事了

    [egin{aligned} sum_{i=0}^ninom{n}{i}i&=sum_{i=0}^ninom{n}{i}sum_{j=1}^kinom{i}{j}{krace j}j!\ &=sum_{j=1}^k{k race j}sum_{i=0}^ninom{n}{i}inom{i}{j}j!\ &=sum_{j=1}^k{k race j}sum_{i=0}^nfrac{n!}{(n-i)!(i-j)!}\ &=sum_{j=1}^k{k race j}sum_{i=0}^nfrac{n!(n-j)!}{(n-i)!(i-j)!(n-j)!}\ &=sum_{j=1}^k{k race j}n^{underline j}sum_{i=0}^ninom{n-j}{n-i}\ &=sum_{j=1}^k{k race j}n^{underline j}2^{n-j} end{aligned} ]


    Code:

    #include <cstdio>
    const int mod=1e9+7;
    inline int add(int x,int y){return x+y>=mod?x+y-mod:x+y;}
    #define mul(x,y) (1ll*(x)*(y)%mod)
    inline int qp(int d,int k){int f=1;while(k){if(k&1)f=mul(f,d);d=mul(d,d),k>>=1;}return f;}
    int str[5010][5010],n,k,ans;
    int main()
    {
    	scanf("%d%d",&n,&k);
    	str[0][0]=1;
    	for(int i=1;i<=k;i++)
    		for(int j=1;j<=i;j++)
    			str[i][j]=add(str[i-1][j-1],mul(str[i-1][j],j));
    	for(int i=1,f=1;i<=n&&i<=k;i++)
    	{
    		f=mul(f,n-i+1);
    		ans=add(ans,mul(f,mul(str[k][i],qp(2,n-i))));
    	}
    	printf("%d
    ",ans);
    	return 0;
    }
    

    2019.3.27


  • 相关阅读:
    Meteor会话
    Meteor事件
    Meteor表单
    Meteor集合
    Meteor模板
    Visual Studio 必备神器
    DB2 DATE类型在显示的时候,带有00:00:00,去掉的方法,使用VARCHAR()函数
    SQL 递归查询
    程序员最艰巨的十大任务
    Windows 7,64位机器上安装DB2 7.2+FP7
  • 原文地址:https://www.cnblogs.com/butterflydew/p/10608874.html
Copyright © 2020-2023  润新知