【CLYZ集训】人人人数【数学】

news2024/11/15 13:41:08

在这里插入图片描述

思路:

先转转转,把答案变成求每种数的出现次数都小于i的方案书除以 C n + m − 1 m C_{n + m - 1}^{m} Cn+m1m
对于每个1到m中的数,设每个数的出现次数为xi,则所有x加起来要等于m,且都小于i。
容斥,设其中k个不小于i,则 ( − 1 ) k (-1)^k (1)k为容斥系数
k的范围容易得到为0到m/i/k,先把其中ik分给这k个数,方案数为 C n k C_{n}^{k} Cnk,然后剩下m-ik继续分,用组合数学技巧得出方案数为 C n + m − i ∗ k − 1 m − i ∗ k C_{n + m - i * k - 1}^{m - i * k} Cn+mik1mik
那么答案就是
a n s = ∑ i = 1 m ( 1 − ∑ k = 0 ⌊ m i ⌋ [ ( − 1 ) k C n k C n + m − i ∗ k − 1 m − i ∗ k ] C n + m − 1 m ) ans = \sum_{i = 1}^{m}(1 - \frac{\sum_{k = 0}^{⌊\frac{m}{i}⌋}[(-1)^kC_n^kC_{n+m-i*k-1}^{m-i*k}]}{C_{n + m - 1}^{m}}) ans=i=1m(1Cn+m1mk=0im[(1)kCnkCn+mik1mik])
然后递推预处理组合数,就能在 O ( m l o g m ) O(mlogm) O(mlogm)的时间通过此题

c o d e code code

#include<iostream>
#include<cstdio>
#include<cstring>
#define ll long long

using namespace std;

const ll MAXN = 5e5 + 10;

ll p, ans;
ll c[MAXN], c2[MAXN], inv[MAXN];

ll qpow(ll x, ll k) {
	ll ans = 1;
	for(; k; k >>= 1, x = x * x % p) if(k & 1) ans = ans * x % p;
	return ans;
}

void solve() {
	ll n, m;
	scanf("%lld%lld", &m, &n);
	c[0] = 1ll, c2[0] = 1ll;
	for(ll i = 1; i <= m; i ++) {
		c[i] = c[i - 1] * (n - i + 1) % p * inv[i] % p;
		c2[i] = c2[i - 1] * (n + i - 1) % p * inv[i] % p;
	}
	ll ans = 0ll, g = c2[m];
	for(ll i = 1; i <= m; i ++) {
		ll o = 1ll;
		for(ll k = 0; k <= m / i; k ++) { 
			ans += o * c[k] * c2[m - i * k] % p;
			ans %= p;
			o = -o;
		}
	}
	printf("%lld\n", (m - ans * qpow(g, p - 2) % p + p) % p);
}

int main() {
	freopen("mode.in", "r", stdin);
	freopen("mode.out", "w", stdout);
	ll t;
	scanf("%lld%lld", &t, &p);
	inv[1] = 1;
	for(ll i = 2; i <= 200000; i ++) inv[i] = qpow(i, p - 2);
	while(t --) {
		solve();
	}
	return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/188598.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

目标检测算法——YOLOV8——算法详解

一、主要贡献 主要的创新点&#xff1a;其实到了YOLOV5 基本创新点就不太多了&#xff0c;主要就是大家互相排列组合复用不同的网络模块、损失函数和样本匹配策略。 Yolo v8 主要涉及到&#xff1a;backbone 使用C2f模块&#xff0c;检测头使用了anchor-free Decoupled-head&a…

HTB_Unified_log4j_jndi注入mongodb修改用户hash

文章目录信息收集漏洞复现漏洞验证漏洞利用提权信息收集 nmap -sV -v 这次扫描时间很长&#xff0c;因为默认只扫 1000 个常用端口&#xff0c;如果扫到大端口就会自动扫描全端口&#xff0c;可以自行加速 22/tcp open ssh OpenSSH 8.2p1 Ubuntu 4ubuntu0.3 (…

Markdown语法-从基础到进阶

时代在进步&#xff0c;越来越多的人和软件开始使用Markdown进行文字编辑&#xff0c;其编辑方便性让很多人爱不释手。但是&#xff0c;不可避免的问题是&#xff0c;在编辑的时候&#xff0c;经常会需要去google,毕竟&#xff0c;习惯了office的可视化操作符号&#xff0c;很多…

在成都Java培训班学习五个多月有用吗?

不知道“有用”的标准是什么&#xff0c;是能入行上岗工作&#xff0c;还是想只通过几个月的培训一跃成为资深开发攻城狮&#xff1f;这里不得不给大家泼瓢冷水&#xff0c;短期培训能让你对口上岗工作就很不错了&#xff1b;想要成为技术大佬&#xff1f;大学里面四年都没能让…

2023年南京Java培训机构排行榜上线,犹豫的小伙伴们看过来!

2022年&#xff0c;JRebel发布了《2022年Java发展趋势和分析》&#xff0c;它通过调研问卷的方式总结的报告&#xff0c;涉及了不同国家、不同岗位、不同公司规模、不同行业&#xff0c;相对来说&#xff0c;该调查报告是有一定参考意义的。数据显示&#xff0c;Java这一语言在…

使用Chisel搭建Systolic Array

最近听到非常多人吹Chisel&#xff0c;为了方便快速做算法实现&#xff0c;就去尝试学了下&#xff0c;发现确实很香&#xff0c;有种相见恨晚的感觉。今天是使用Chisel搭建个脉动阵列&#xff08;Systolic Array, SA&#xff09;[1]&#xff0c;脉动阵列是神经网络中最基础也是…

用递归玩转简单二叉树

前言&#xff1a; 数据结构学到二叉树&#xff0c;就进入到了有难度的部分了&#xff0c;但难度对应着重要性&#xff0c;其重要性也不言而喻了。这节我会介绍用C语言实现递归方法的二叉树的一些重要基本功能&#xff0c;在二叉树中又属于基础知识&#xff0c;有需要的各位必须…

下载CleanMyMac X有什么好处?最新版本有哪些新功能

CleanMyMac X 是一款先进的、集所有功能于一身的实用系统清理工具&#xff0c;它能帮助保持您的Mac保持清洁。只需两个简单的点击&#xff0c;就可以删除无用的文件&#xff0c;以节省您宝贵的磁盘空间。CleanMyMac X可以流畅地与系统性能相结合&#xff0c;清洁不需要的语言、…

EasyCVR新增角色分配分组功能的使用及注意事项

我们在此前的文章中分享过关于EasyCVR分组功能的更新&#xff0c;具体可以查看这篇文章&#xff1a;AI云边端EasyCVR平台新功能解析&#xff1a;支持为角色选择多级分组。今天我们来为大家介绍一下&#xff0c;新功能在配置时需要注意的事项。1、首先我们先简单回顾一下老版本的…

【Js】语法糖之数组解构和拆包表达式

文章目录数组结构拆包表达式来源数组结构 在ES5中&#xff1a;如果计划从数组中提取特定元素&#xff0c;就需使用元素的索引&#xff0c;并将其保存到变量之中。 在ES6中&#xff1a;新增数组解构功能&#xff0c;以简化获取数组中数据的过程。 数组解构采用了数组字面量的…

【SpringCloud复习巩固】Sentinel

sentinel 链接&#xff1a;https://pan.baidu.com/s/1lLJKBSDJNJgW5Lbru6NYrA 提取码&#xff1a;ut3g 目录 一.初识Sentinel 1.1雪崩问题及其解决方案 1.2认识Sentinel 1.3安装Sentinel控制台 1.4微服务整合sentinel 二.限流规则 2.1簇点链路 2.2流控规则 2.3流控效果…

从0~1实现 单体或微服务下 实现订单未支付超时取消功能 方案(2)-rocketmq 延迟队列方案 完整设计和源码

从0~1实现 单体或微服务下 订单未支付超时取消功能 方案&#xff08;1&#xff09;-java delayquene 注册中心(zookeeper/nacos)高可用方案从0~1实现 单体或微服务下 订单未支付超时取消功能 方案&#xff08;2&#xff09;-rocketmq 延迟队列方案 场景说明 我们日常接触的电…

IronPDF for .NET 2023.1 Crack

关于 .NET 的 IronPDF 创建、编辑和导出 PDF 文档。 IronPDF for .NET 允许开发人员在 C#、F# 和 VB.Net for .NET Core 和 .NET Framework 中轻松创建 PDF 文档。您可以选择简单的 HTML&#xff0c;或合并 CSS、图像和 JavaScript。IronPDF 呈现紧跟谷歌浏览器。 IronPDF 功能…

eclipse新手快捷键

1. ctrlshiftr&#xff1a;打开资源 这组Eclipse快捷键可以让你打开你的工作区中任何一个文件&#xff0c;而你只需要按下文件名或mask名中的前几个字母&#xff0c;比如applic*.xml。美中不足的是这组快捷键并非在所有视图下都能用。 2. ctrlo&#xff1a;快速outline 列出…

2023年深圳Java培训机构排名,不看后悔系列!

不忘初心&#xff0c;方得始终。2023&#xff0c;继续战斗&#xff01;想要学习Java的小伙伴们看过来~深圳Java培训机构排名最新排行榜来了&#xff01;靠谱的Java培训机构都在这里&#xff0c;总有一个你喜欢的&#xff0c;总能选出一个合适你的&#xff0c;快拿出小本本记下这…

【MyBatis】搭建MyBatis

1、MyBatis简介 1.1、MyBatis历史 MyBatis最初是Apache的一个开源项目iBatis, 2010年6月这个项目由Apache Software Foundation迁移到了Google Code。随着开发团队转投Google Code旗下&#xff0c; iBatis3.x正式更名为MyBatis。代码于2013年11月迁移到Github。iBatis一词来源…

2023年flash水坑攻击源码

1. 背景 在有授权的攻防演练中&#xff0c;很多时候都会用到水坑攻击或者钓鱼&#xff0c;目前flash钓鱼一直都在做&#xff0c;以前的版本中&#xff0c;提示flash版本过低是这样的&#xff1a; 下载界面是这样的&#xff08;下图来源于互联网&#xff09;&#xff1a; 但是目…

javascript封装一个单向链表

单向链表 单向链表类似于火车&#xff0c;有一个火车头&#xff0c;火车头会连接一个节点&#xff0c;节点上有乘客&#xff0c;并且这个节点会连接下一个节点&#xff0c;以此类推。 链表的火车结构 链表的数据结构 head 属性指向链表的第一个节点。 链表中的最后一个节点指…

2023年郑州Java培训机构排名新鲜出炉,快来看看都有哪些!

郑州是一个很有发展潜力又极具竞争力的城市&#xff0c;很多大厂现在都在往二线城市转移&#xff0c;其中郑州就是一个很好的选择。所以想要在郑州有好的发展前景&#xff0c;就要不断提高自己的技术竞争力&#xff0c;Java软件开发就成为了不少小伙伴们想要提升价值技能选择的…

Pytorch 基础

✅作者简介&#xff1a;人工智能专业本科在读&#xff0c;喜欢计算机与编程&#xff0c;写博客记录自己的学习历程。 &#x1f34e;个人主页&#xff1a;小嗷犬的个人主页 &#x1f34a;个人网站&#xff1a;小嗷犬的技术小站 &#x1f96d;个人信条&#xff1a;为天地立心&…