BZOJ2982 combination(lucas定理)

这篇具有很好参考价值的文章主要介绍了BZOJ2982 combination(lucas定理)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

题目大意

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的阶乘和逆元,然后递归求解即可。文章来源地址https://www.toymoban.com/news/detail-456803.html

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

到了这里,关于BZOJ2982 combination(lucas定理)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • BZOJ4975 区间翻转

    题目大意 有一个长度为 n n n 的序列 a 1 , a 2 , … , a n a_1,a_2,dots,a_n a 1 ​ , a 2 ​ , … , a n ​ 。小 Q Q Q 和小 T T T 在玩游戏。两人轮流操作,小 Q Q Q 先手。对于每次操作,玩家需要选择一个长度为 4 x + 2 4x+2 4 x + 2 或 4 x + 3 4x+3 4 x + 3 的区间 [ l , r ] [l,r] [ l , r ] ,其中 x x x 是玩

    2023年04月12日
    浏览(6)
  • 【二十】【动态规划】879. 盈利计划、377. 组合总和 Ⅳ、96. 不同的二叉搜索树 ,三道题目深度解析

    【二十】【动态规划】879. 盈利计划、377. 组合总和 Ⅳ、96. 不同的二叉搜索树 ,三道题目深度解析

    动态规划就像是解决问题的一种策略,它可以帮助我们更高效地找到问题的解决方案。这个策略的核心思想就是将问题分解为一系列的小问题,并将每个小问题的解保存起来。这样,当我们需要解决原始问题的时候,我们就可以直接利用已经计算好的小问题的解,而不需要重

    2024年01月16日
    浏览(12)
  • 18.Lucas-Kanade光流及OpenCV中的calcOpticalFlowPyrLK

    18.Lucas-Kanade光流及OpenCV中的calcOpticalFlowPyrLK

    欢迎访问个人网络日志🌹🌹知行空间🌹🌹 光流描述了像素在图像中的运动,就像彗星☄划过天空中流动图像。同一个像素,随着时间的流逝,会在图像中运动,光流法就是追踪它的运动过程。 光流法根据追踪的像素数又可以分成 稀疏光流法 和 稠密光流法 。 稀疏光流法

    2024年02月13日
    浏览(11)
  • 【LeetCode题目详解】第九章 动态规划part03 343. 整数拆分 96.不同的二叉搜索树 (day41补)

    【LeetCode题目详解】第九章 动态规划part03 343. 整数拆分 96.不同的二叉搜索树 (day41补)

    给定一个正整数  n  ,将其拆分为 k 个 正整数 的和(  k = 2  ),并使这些整数的乘积最大化。 返回 你可以获得的最大乘积  。 示例 1: 示例 2: 提示: 2 = n = 58 看到这道题目,都会想拆成两个呢,还是三个呢,还是四个.... 我们来看一下如何使用动规来解决。 # 动态规划 动

    2024年02月10日
    浏览(15)
  • Elasticsearch:Combined fields 查询

    有时一个匹配项可以覆盖多个文本字段。 在这种情况下,你可以使用 combined_fields 查询来搜索多个文本字段,就好像它们的值实际上已被索引到一个组合字段中一样。 除此之外,combined_fields 的主要好处是强大且易于理解的评分算法。这种做法也有类似于 copy_to​​​​​​​

    2023年04月19日
    浏览(8)
  • hadoop中combiner是什么

    Combiner(合并器) 在Hadoop中,Combiner(合并器)是一个可选的阶段,用于优化MapReduce任务的性能。它是在Map阶段输出之后、规约(reduction)之前执行的。 Combiner的作用是在Map任务的本地节点上对Map阶段的输出进行局部聚合。它接收Map任务输出的键值对,并将具有相同键的键值

    2024年02月12日
    浏览(7)
  • 5.MapReduce之Combiner-预聚合

    5.MapReduce之Combiner-预聚合

    在 MR、Spark、Flink 中,常用的减少网络传输的手段。 通常在 Reducer 端合并,shuffle 的数据量比在 Mapper 端要大,根据业务情况及数据量极大时,将大幅度降低效率;且预聚合这种方式也是有其缺点,不能改变业务最终的逻辑,否则会出现,计算结果不正确的情况。 如下图,可

    2024年02月02日
    浏览(9)
  • Lintcode 152 · Combinations (组合好题)

    152 · Combinations Algorithms Medium Description Given two integers n and k. Return all possible combinations of k numbers out of 1, 2, … , n. You can return all combinations in any order, but numbers in a combination should be in ascending order. Example Example 1: Input: n = 4, k = 2 Output: [[1,2],[1,3],[1,4],[2,3],[2,4],[3,4]] Example 2: Input: n = 4,

    2024年02月05日
    浏览(3)
  • Application of Permutation and Combination

    Application of Permutation and Combination

    目录 Summary Reference Online Tool Cracking the Safe! 计算比赛前三名有多少种排列方式? Can you win the lottery? How make a pill? Think 如果你遇到的问题,自己不确定是排列还是组合,但确定想求出摆放的全部方式,那么可以用逐步分析法。 0.首先确定这个问题的次序重要不? 1.重要 重要就用

    2024年02月08日
    浏览(8)
  • 【HDLBits 刷题 5】Circuits(1)Combinational Logic

    【HDLBits 刷题 5】Circuits(1)Combinational Logic

    目录 写在前面 Combinational Logic Basic Gates Wire GND NOR Another gate Two gates More logic gates 7420 chips Truth table Two bit equality Simple circuit A Simple circuit B Combine circuits A and B Ring or vibrate Thermostat 3 bit population count Gates and vectors Even longer vectors Multiplexers 2 to 1 mux 2 to 1 bus mux 9 to 1 mux 256 to 1 mux 256 t

    2024年02月02日
    浏览(14)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包