BZOJ2982 combination(lucas定理)

news/2025/2/21 2:22:05

题目大意

LMZ有 n n n个不同的基友,他每天晚上要选 m m m个一起玩,而且要求每天晚上的选择都不一样。那么LMZ能够持续多少个这样的夜晚呢?当然,LMZ的一年有10007天,所以他想知道答案   m o d   10007 \bmod 10007 mod10007的值。

t t t组数据。

1 ≤ t ≤ 200 , 1 ≤ m , n ≤ 200 , 000 , 000 1\leq t\leq 200,1\leq m,n\leq 200,000,000 1t200,1m,n200,000,000


题解

前置知识:lucas定理

题意即求 C n m C_n^m Cnm 10007 10007 10007取模后的值,由 l u c a s lucas lucas定理可得

C ( n , m ) = C ( n / m o d , m / m o d ) × C ( n % m o d , m % m o d ) C(n,m)=C(n/mod,m/mod)\times C(n\% mod,m\% mod) C(n,m)=C(n/mod,m/mod)×C(n%mod,m%mod)

先预处理出 1 1 1 m o d − 1 mod-1 mod1的阶乘和逆元,然后递归求解即可。

code

#include<bits/stdc++.h>
using namespace std;
const int N=10006,mod=10007;
int jc[N+5],ny[N+5];
int mi(int t,int v){
	if(!v) return 1;
	int re=mi(t,v/2);
	re=re*re%mod;
	if(v&1) re=re*t%mod;
	return re;
}
void init(){
	jc[0]=1;
	for(int i=1;i<=N;i++) jc[i]=jc[i-1]*i%mod;
	ny[N]=mi(jc[N],mod-2);
	for(int i=N-1;i>=0;i--) ny[i]=ny[i+1]*(i+1)%mod;
}
int C(int x,int y){
	if(x<y) return 0;
	return jc[x]*ny[y]%mod*ny[x-y]%mod;
}
int lucas(int x,int y){
	if(x<y) return 0;
	if(y==0) return 1;
	return lucas(x/mod,y/mod)*C(x%mod,y%mod)%mod;
}
int main()
{
	int t,n,m;
	init();
	scanf("%d",&t); 
	while(t--){
		scanf("%d%d",&n,&m);
		printf("%d\n",lucas(n,m));
	}
	return 0;
}

http://www.niftyadmin.cn/n/353016.html

相关文章

Linux文件内管理命令

目录 Linux文件内管理命令 创建文件 目录 普通文件 链接文件 删除文件 删除文件 删除目录 查看文件 目录 普通文件 编辑普通文件 在命令行进行文本内容处理 查找内容 复制文件 移动文件 命令详解 mkdir 作用 语法格式 touch 作用 语法格式 选项 ​编辑…

Linux:LVM动态磁盘管理

Linux中的LVM是什么 LVM&#xff08;Logical Volume Manager&#xff09;是Linux系统中的一种动态分区技术&#xff0c;它允许将多个物理硬盘上的存储空间组合成一个或多个逻辑卷&#xff08;Logical Volume&#xff09;&#xff0c;并且可以在运行时对逻辑卷进行调整。LVM的设…

特征缩放(Scale Features)、特征缩放预测​CO2 值、df列索引扩展

目录 1、特征缩放 2、预测CO2 值 3、df列索引扩展 1、特征缩放 特征缩放可以用于不同的度量单位。度量单位不同的情况下&#xff0c;特征的数值大小也会有所不同&#xff0c;这可能会影响到某些机器学习算法的表现。例如&#xff0c;如果一个特征的单位是英寸&#xff0c;而另…

目标检测常用模型之R-CNN、Fast R-CNN、Faster R-CNN

文章目录 一、模型分类1. 一阶段目标检测2. 二阶段目标检测 二、常见模型1. R-CNN2. Fast R-CNN3. Faster R-CNN 一、模型分类 2012年卷积神经网络(Convolutional Neural Networks, CNNs)的兴起将目标检测领域推向了新的台阶。基于CNNs的目标检测算法主要有两条技术发展路线&am…

【Docker】- 02 Docker-Compose

Docker-Compose Docker-Compose1 下载并安装Docker-Compose1.1 下载Docker-Compose1.2 设置权限1.3 配置环境变量1.4 测试 2 Docker-Compose管理MySQL和Tomcat容器3 使用docker-compose命令管理容器4 docker-compose配合Dockerfile使用4.1 docker-compose文件4.2 Dockerfile文件…

ACP(MaxCompute篇)-MaxCompute开发工具

创建MaxCompute项目 第一种创建项目方式 1.知道MaxCompute服务。 2.创建项目。 3.创建成功。 第二种创建项目的方式 1.进入DataWorks控制台。 2.创建工作空间。 3.创建的类型。 4.创建计算方式。 5.自定义选择。 6.创建成功。 MaxCompute开发工具简介 Odpscmd 安装配置 下…

交通标志识别系统-卷积神经网络

介绍 使用Python作为主要开发语言&#xff0c;基于深度学习TensorFlow框架&#xff0c;搭建卷积神经网络算法。并通过对数据集进行训练&#xff0c;最后得到一个识别精度较高的模型。并基于Django框架&#xff0c;开发网页端操作平台&#xff0c;实现用户上传一张图片识别其名…

【计算机网络基础】章节测试5 运输层

文章目录 选择题辨析题应用题选择题 以下关于TCP协议工作原理与过程的描述中,错误的是( C )。 A. TCP连接建立过程需要经过“三次握手” B. 当TCP传输连接建立之后,客户与服务器应用进程进行全双工的字节流传输 C. 只有服务器端可以提出释放TCP连接请求 D. TCP连接释放需要…