如果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;
}

最新文章

  1. VS2013 有效密钥
  2. LintCode Balanced Binary Tree
  3. Intel&#174; Threading Building Blocks (Intel&#174; TBB) Developer Guide 中文 Parallelizing Data Flow and Dependence Graphs并行化data flow和依赖图
  4. 【python】一个简单的贪婪爬虫
  5. springmvc笔记(来自慕课网)
  6. 如何保护java程序不被反编译
  7. Codeforces 14D
  8. 安卓反汇编工具arm-eabi-objdump
  9. JSON.parse()和JSON.stringify()和eval(&#39;(&#39; + result + &#39;)&#39;)
  10. 南京邮电大学java程序设计作业在线编程第四次作业
  11. 报文ISO8583协议
  12. Jquery验证码倒计时
  13. 2018-2019-2 网络对抗技术 20165328 Exp6 信息收集与漏洞扫描
  14. 浅谈C#在网络波动时防重复提交
  15. sqlserver 中常见的函数字符串函数
  16. Codeforces Round #506 (Div. 3) C. Maximal Intersection
  17. 【374】Adobe Acrobat 操作技巧
  18. AJPFX:外汇的点差和点值
  19. spring security 表单认证的流程
  20. linux 命令之cut

热门文章

  1. 将一张表的主键(ID)重置为从1开始自增排列
  2. [cdoj 1344]树状数组区间加等差数列
  3. 使用MAT分析内存泄露
  4. source改变当前路径
  5. jQuery知识点:attr与prop的区别
  6. mpvue基本使用
  7. JS向右弹出DIV,点击可向左隐藏。我用jquery可以从左下角像右上角隐藏,怎么从做向右隐藏呢?
  8. 有关javamelody的配置
  9. 【uva10829-求形如UVU的串的个数】后缀数组+rmq or 直接for水过
  10. codevs3304 水果姐逛水果街Ⅰ