博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
nyoj1328派队方案
阅读量:1870 次
发布时间:2019-04-26

本文共 1024 字,大约阅读时间需要 3 分钟。

nyoj1328派队方案

n个东西放入m个盒子的两种常见问题
时间限制:1000 ms | 内存限制:65535 KB
难度:3
描述
2017年有n场ACM比赛,南阳理工学院有m支集训队,且这n场比赛学校均会派一个队伍参赛。现在赵老师来安排外出比赛顺序,他想知道如果要使每个队伍至少外出比赛一次,则有多少种派队方案?(保证这n场比赛时间相互独立)
输入
多组测试数据。每组测试数据占一行,每行两个数字n(1<=n<=100),m(1<=m<=100)表示有n场比赛,m支集训队。其中输入数据保证n>=m。
输出
每组输入数据的输出占一行,结果对1000000007取余。
样例输入
3 2
5 4
样例输出
6
240

//第二类Stirling数:S(r, c) = S(r-1,c-1) + c * S(r-1, c)//s[1][1] = s[2][1] = s[2][2] = 1;//n个不同东西放入m个相同盒子 种数 = S(n, m);//n个不同东西放入m个不相同盒子 种数 = m!*S(n, m);#include
#include
const int MaxSize = 105;const int mod = 1000000007;long long s[MaxSize][MaxSize] = {0};long long factorial[MaxSize];using namespace std;int main() { s[1][1] = s[2][1] = s[2][2] = 1; for (int r = 3; r < MaxSize; r++) { for (int c = 1; c <= r; c++) { s[r][c] = (s[r-1][c-1] + c * s[r-1][c]) % mod; } } factorial[0] = 1; for (int i = 1; i <= 105; i++) { factorial[i] = factorial[i-1] * i % mod; } int n, m; while (scanf("%d%d", &n, &m) != EOF) { printf("%lld\n", s[n][m] * factorial[m] % mod); } return 0;}

转载地址:http://wzeff.baihongyu.com/

你可能感兴趣的文章
实习生小白的日常
查看>>
实习小白的日常(4)
查看>>
微信扫码登录验证PHP代码(不用开放平台)
查看>>
CH554E USB单片机 10引脚小封装低成本USB方案
查看>>
通信猫调试软件(WINDOWS单文件绿色版 串口/并口/USB/TCP/UDP/HTTP/二维码。。。)
查看>>
windows MQTT客户端
查看>>
LINUX下挂载(mount)查看树莓派镜像文件
查看>>
1元钱的超低成本单芯片USB单片机方案
查看>>
单片机/树莓派扩展双串口(TTL和RS485)
查看>>
基于CH568芯片的SATA电子盘方案
查看>>
linux下C语言判断网络是否连接
查看>>
2021/4/27课堂总结和作业
查看>>
2021.4.28课堂总结和作业
查看>>
2021.4.29课堂总结
查看>>
2021.4.30课堂总结和作业
查看>>
需要吗?2000GB+学习视频教程 面试资料免费下载
查看>>
MySQL对已存在数据库表添加自增ID字段
查看>>
磁盘爆满,服务异常同时MySQL报“Table ** is marked as crashed and should be repaired”问题解决
查看>>
idea中的一些常用快捷键
查看>>
js校验表单后提交表单的三种方法总结【转载】
查看>>