【第二类Stirling数】Gym - 101147G - The Galactic Olympics
2024-08-30 06:54:56
如果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\n",(int)ans);
}
else if(n>K)
printf("%d\n",(int)(f[n][K]*jc[K]%MOD));
else
puts("0");
}
return 0;
}
最新文章
- VS2013 有效密钥
- LintCode Balanced Binary Tree
- Intel&#174; Threading Building Blocks (Intel&#174; TBB) Developer Guide 中文 Parallelizing Data Flow and Dependence Graphs并行化data flow和依赖图
- 【python】一个简单的贪婪爬虫
- springmvc笔记(来自慕课网)
- 如何保护java程序不被反编译
- Codeforces 14D
- 安卓反汇编工具arm-eabi-objdump
- JSON.parse()和JSON.stringify()和eval(&#39;(&#39; + result + &#39;)&#39;)
- 南京邮电大学java程序设计作业在线编程第四次作业
- 报文ISO8583协议
- Jquery验证码倒计时
- 2018-2019-2 网络对抗技术 20165328 Exp6 信息收集与漏洞扫描
- 浅谈C#在网络波动时防重复提交
- sqlserver 中常见的函数字符串函数
- Codeforces Round #506 (Div. 3) C. Maximal Intersection
- 【374】Adobe Acrobat 操作技巧
- AJPFX:外汇的点差和点值
- spring security 表单认证的流程
- linux 命令之cut