zoukankan      html  css  js  c++  java
  • 【第二类Stirling数】Gym

    如果K>n,就无解;

    如果K==n,就答案是P(n,n);

    如果K<n,答案就是s(n,K)*P(K,K);

    P为排列数,s为第二类斯特林数。

    第二类斯特林数就是将n个球,划分为K个非空集合的方案数(无序),所以要再乘上集合数的全排列。

    #include<cstdio>
    using namespace std;
    typedef long long ll;
    #define MOD 1000000007ll
    int T,n,K;
    ll f[1010][1010],jc[1000010];
    int main()
    {
    	freopen("galactic.in","r",stdin);
    	f[1][1]=1;
    	for(int i=2;i<=1000;++i)
    	  for(int j=1;j<=i;++j)
    	    f[i][j]=(f[i-1][j-1]+(ll)j*f[i-1][j]%MOD)%MOD;
    //	for(int i=1;i<=10;++i)
    //	  {
    //	  	for(int j=1;j<=i;++j)
    //	  	  printf("%I64d ",f[i][j]);
    //	  	puts("");
    //	  }
    	jc[0]=1;
    	for(int i=1;i<=1000000;++i)
    	  jc[i]=jc[i-1]*(ll)i%MOD;
    	scanf("%d",&T);
    	for(;T;--T)
    	  {
    	  	scanf("%d%d",&n,&K);
    	  	if(n==K)
    	  	  {
    	  	  	ll ans=1;
    	  	  	for(int i=1;i<=K;++i)
    	  	  	  ans=ans*(ll)i%MOD;
    	  	  	printf("%d
    ",(int)ans);
    	  	  }
    	  	else if(n>K)
    	  	  printf("%d
    ",(int)(f[n][K]*jc[K]%MOD));
    	  	else
    	  	  puts("0");
    	  }
    	return 0;
    }
  • 相关阅读:
    从up6-down2升级到down3
    XproerIM产品使用手册
    Web大文件上传控件-asp.net-bug修复-Xproer.HttpUploader6.2
    WordPaster-Chrome浏览器控件安装方法
    poj1009
    poj1012
    poj1016
    poj1019
    poj1023
    poj1026
  • 原文地址:https://www.cnblogs.com/autsky-jadek/p/6347780.html
Copyright © 2011-2022 走看看