【牡牛和牝牛】

ops/2024/9/25 1:02:01/

题目

代码

#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
const int N = 1e5+10;
const int mod = 5000011;
int fac[N], infac[N];
int qmi(int base, int expo, int p)
{int retval = 1;while(expo){if(expo & 1) retval = (LL)retval * base % p;base = (LL)base * base % p;expo >>= 1;}return retval;
}
void init(int n)
{fac[0] = infac[0] = 1;for(int i = 1; i <= n; i++){fac[i] = (LL)fac[i-1] * i % mod;infac[i] = (LL)infac[i-1] * qmi(i, mod-2, mod) % mod;}
}
int getc(int a, int b)
{return (LL)fac[a] * infac[b] % mod * infac[a-b] % mod;
}
int main()
{int n, k;cin >> n >> k;init(N);int ans = 0;if(n == 1) ans = 2;else if(n == 2) ans = 2;else{ans += 1 + n;for(int i = 2; i + (i-1) * k <= n; i++){int j = n - i - (i-1) * k;if(j == 0) ans += 1;else ans += getc(i+j, j);ans %= mod;}}cout << ans;return 0;
}

思路

(牡牛数目用A表示,牝牛数目用B表示)

遍历A数目从0~n。

其中,当A=0时,方案数为1。

当A = 1时,方案数为n。

当A >= 2时,假设有ABA结构(多余的B先不考虑):其中A = i,B = (i-1) * k。

则剩余的B数量为j。

若此时j == 0,则方案数为1。(getc中i >= 2, j+1 = 1,retval = 0)。

若j != 0,B牛有j个,存在i+1个空。

这下最麻烦的部分就是如何把B牛分到i+1个位置里,位置可以放0个。

1        n球(牛)同 m盒子不同 盒子不空

C(n-1, m-1)

2        如果改成盒子可空,则等价于:加入m个透明假球 仍旧盒子不空

C(n+m-1, m-1)。其中全是透明假球的盒子就等价于空盒子,m个的目的是为了产生m-1个空盒子的情况。


http://www.ppmy.cn/ops/95895.html

相关文章

一分钟掌握java9新特性

try-with-resources语句 /** * 在处理必须关闭的资源时&#xff0c;使用try-with-resources语句替代try-finally语句。 生成的代码更简洁&#xff0c;更清晰&#xff0c;并且生成的异常更有用 * java9 之前写法 */ public static String readFile1(String fileName){ tr…

网络协议栈应用层的意义(内含思维导图和解析图通俗易懂超易理解)

绪论​&#xff1a; “节省时间的方法就是全力以赴的将所要做的事情完美快速的做完&#xff0c;不留返工重新学习的时间&#xff0c;才能省下时间给其他你认为重要的东西。” 本章主要讲到OSI网络协议栈中的应用层的作用和再次在应用层的角度理解协议的具体意义&#xff0c;以及…

[SWPUCTF 2021 新生赛]babyrce

我们传cookie admin1 访问http://node5.anna.nssctf.cn:29911/rasalghul.php 在PHP中&#xff0c;preg_match函数是一个用于进行正则表达式匹配的内置函数。它可以通过正则表达式对一个字符串进行匹配&#xff0c;判断该字符串是否满足正则表达式的规则。 发现过滤空格&#x…

SQLALchemy ORM 的关联关系之 ORM 中的多对多

SQLALchemy ORM 的关联关系之 ORM 中的多对多 场景示例实现多对多关系定义模型插入和查询数据总结在 SQLAlchemy ORM 中,多对多(Many-to-Many)关联关系是一种常见的关系类型,它表示两个表中的行可以相互关联,即一个表中的多行可以与另一个表中的多行相关联。为了实现这种关…

Jmeter+Influxdb+Grafana平台监控性能测试过程(三种方式)

一、Jmeter自带插件监控 下载地址&#xff1a;Install :: JMeter-Plugins.org 安装&#xff1a;下载后文件为jmeter-plugins-manager-1.3.jar&#xff0c;将其放入jmeter安装目录下的lib/ext目录&#xff0c;然后重启jmeter&#xff0c;即可。 启动Jmeter&#xff0c;测试计…

无限金币版《废土世界》安卓手机游戏下载,游戏分享

《废土世界》&#xff08;JunkWorld&#xff09;是由IRONHIDE游戏工作室开发的一款塔防游戏&#xff0c;它将玩家带入一个荒凉、贫瘠的后末日世界&#xff0c;玩家需要带领一队拾荒者穿越沙漠和放射性沼泽&#xff0c;进行生存战斗。游戏以其战略深度和丰富的塔防元素为特色&am…

【自用】Python爬虫学习(六):通过m3u8文件下载ts文件并合并为.mp4文件

Python爬虫学习&#xff08;六&#xff09; 下载视频&#xff08;简单版&#xff09;的步骤介绍第一步&#xff1a;在网页上找到.m3u8文件第二步&#xff1a;通过.m3u8文件下载对应的.ts视频文件第三步&#xff1a;依据.m3u8文件合并.ts文件为一个.mp4文件 下载视频&#xff08…

打造高可用集群的基石:深度解析Keepalived实践与优化

高可用集群 集群类型 集群类型主要分为负载均衡集群&#xff08;LB&#xff09;、高可用集群&#xff08;HA&#xff09;和高性能计算集群&#xff08;HPC&#xff09;三大类。每种集群类型都有其特定的应用场景和优势。 1. 负载均衡集群&#xff08;LB&#xff09; 负载均衡集…