BISHI70 【模板】组合数 📅 发布时间:2026/7/15 0:22:18 👁️ 浏览次数: 思路求解代码// 定义模数常量用于所有取模运算privatestaticfinalintMOD1000000007;// 定义最大计算范围常量privatestaticfinalintMAX_N500001;// 存储阶乘值的数组privatestaticlong[]factnewlong[MAX_N];// 存储阶乘逆元的数组privatestaticlong[]invFactnewlong[MAX_N];/** * 主方法 * 处理输入输出调用预计算和组合数计算方法 * param args 命令行参数 * throws IOException 可能抛出的IO异常 */publicstaticvoidmain(String[]args)throwsIOException{// 使用BufferedReader读取输入PrintWriter输出结果BufferedReaderbrnewBufferedReader(newInputStreamReader(System.in));PrintWriteroutnewPrintWriter(newOutputStreamWriter(System.out));// 预计算阶乘和逆元precompute();// 读取测试用例数量intTInteger.parseInt(br.readLine().trim());// 处理每个测试用例for(inti0;iT;i){// 读取每行输入并分割String[]strbr.readLine().split(\\s);intnInteger.parseInt(str[0]);intmInteger.parseInt(str[1]);// 输出组合数计算结果out.println(nCr(m,n));}// 清空输出缓冲区并关闭资源out.flush();out.close();br.close();}/** * 使用快速幂算法计算base的exp次方对MOD取模的结果 * 快速幂算法是一种高效计算幂运算的算法时间复杂度为O(log n) * * param base 底数 * param exp 指数 * return base的exp次方对MOD取模的结果 */privatestaticlongmypower(longbase,longexp){// 初始化结果为1对MOD取模防止MOD为1时结果错误longans1%MOD;// 当指数exp大于0时继续循环while(exp0){// 如果当前指数是奇数将base乘入结果if(exp%21){ans(ans*base)%MOD;}// base平方指数减半base(base*base)%MOD;exp/2;}// 返回最终结果returnans;}/** * 预计算阶乘和阶乘的逆元数组 * 使用动态规划方法计算阶乘数组fact[] * 使用费马小定理计算逆元数组invFact[] */privatestaticvoidprecompute(){// 初始化0的阶乘和0的阶乘逆元为1fact[0]1;invFact[0]1;// 动态规划计算阶乘数组for(inti1;iMAX_N;i){fact[i](fact[i-1]*i)%MOD;}// 使用费马小定理计算最大阶乘的逆元invFact[MAX_N-1]mypower(fact[MAX_N-1],MOD-2);// 逆向递推计算其他阶乘的逆元for(intiMAX_N-2;i1;i--){invFact[i](invFact[i1]*(i1))%MOD;}}/** * 计算组合数 nCr即从n个物品中选取r个物品的组合数 * 使用预计算阶乘和阶乘逆元的方法来高效计算组合数 * * param n 总物品数 * param r 选取物品数 * return 组合数结果对MOD取模 */privatestaticlongnCr(intn,intr){// 如果r小于0或大于n组合数为0if(r0||rn){return0;}// 使用公式 nCr n! / (r! * (n-r)!) 计算// 通过预计算的阶乘数组fact和阶乘逆元数组invFact来计算// 并对MOD取模防止数值溢出return(((fact[n]*invFact[r])%MOD)*invFact[n-r])%MOD;}
Flink与Hive集成:批流一体的大数据仓库方案 Flink与Hive集成:批流一体的大数据仓库方案 关键词:Flink、Hive、批流一体、实时数仓、大数据仓库 摘要:传统大数据处理中,批处理(Hive)与流处理(Flink)长期处于“分裂”状态&#x… 2026/7/11 22:33:14
大数据环境下RabbitMQ的消息压缩技术 大数据环境下RabbitMQ的消息压缩技术关键词:RabbitMQ、消息压缩、大数据、数据传输、吞吐量优化、压缩算法、性能调优摘要:在大数据时代,海量消息的高效传输与存储对消息队列系统提出严峻挑战。本文深入探讨RabbitMQ在大数据场景下的消息压缩… 2026/7/13 18:23:12
C++ 多线程与并发系统取向(五)—— std::atomic:原子操作与状态一致性(类比 Java Atomic) 一、先问一个核心问题前面我们已经学了:mutex —— 保护共享资源condition_variable —— 线程协作那为什么还需要:std::atomic因为有一种场景:你不是在保护“复杂资源” 你只是想保证“某个状态是安全的”二、atomic 解决什么问题࿱… 2026/7/12 9:18:42
为什么 AI 总是“一本正经地胡说八道”?大模型幻觉终于讲明白了 你问 AI:“这句话出自哪本书?”它给出书名、作者、出版社,甚至精确到页码。你满心欢喜地去查,却发现书里根本没有这句话。更令人困惑的是,它的语气没有一丝犹豫。这不是 AI 在故意撒谎,而是大模型最典型、也… 2026/7/15 0:21:08
这个GitHub工具太狠了,一键把网站搬回家,断网照样用! 你有没有遇到过这种情况——在飞机上、地铁里,信号全无,想翻之前收藏的一个网页,死活打不开。这时候你就想,要是能把整个网站”搬”到本地该多好。还真有人做了这么个工具。叫 kage,一个越南老哥用 Go 写的。原理说起来… 2026/7/15 0:17:07
2026年商城网站建设公司排名,综合实力谁更强 今天给大家带来2026年商城网站建设公司排名,综合实力谁更强。据行业白皮书数据,截至2026年第一季度,微信小程序日活已达9.2亿,同比增幅18.7%;全网商城小程序数量突破380万,零售行业商家渗透率高达74.3%&… 2026/7/15 0:15:07
ArkCompiler 5.0:方舟编译器新一代编译优化技术解析(160) ArkCompiler(方舟编译器)作为 HarmonyOS 的核心底层技术,在 5.0 版本中迎来了深度的架构演进与性能突破。其核心目标是通过技术创新,解决跨语言调用开销大、内存占用高以及复杂场景渲染卡顿等行业痛点。一、 核心架构突破… 2026/7/15 0:13:06
国自然会评进行时,评审ABC代表什么? 每年7月,国自然进入紧张的会评阶段。无数申请人一边焦急等待结果,一边反复琢磨函评反馈里的A、B、C等级。很多人只知道ABC会决定能否上会,却分不清两套评分体系的区别:国自然项目最终能否突围,由综合评价得分ABCD与资助… 2026/7/15 0:13:06
深度学习求职通关秘籍:Deep-Learning-Interview-Book开源项目深度解析与实战使用指南 深度学习求职通关秘籍:Deep-Learning-Interview-Book开源项目深度解析与实战使用指南 在人工智能浪潮席卷全球的今天,深度学习算法工程师已成为科技行业最具竞争力的岗位之一。然而,面对日新月异的技术迭代和高强度的面试考核,许多… 2026/7/15 0:11:05
行星减速机的工作原理是什么?从齿轮运动关系到减速比计算 一、行星齿轮机构的组成 标准行星齿轮机构主要包括: 太阳轮; 行星轮; 内齿圈; 行星架。 太阳轮位于机构中心。 多个行星轮围绕太阳轮均匀布置,行星轮内侧与太阳轮外啮合,外侧与内齿圈内啮合。 行星轮通过轴… 2026/7/15 0:03:00
阅读Java开源框架源码的心得分享! 前几日闲来无事有幸看到了一位博主分享自己阅读开源框架源码的心得,看了之后也引发了我的一些深度思考。我们为什么要看源码?我们该怎么样去看源码? 其中前者那位博主描述的我觉得很全了(如下图所示),就不做… 2026/7/15 0:03:00
【LINUX】驱动 【LINUX驱动】【字符设备】【中断】【Platform】【网课 设备树】【GPIO】【PINCTRL】【INPUT】【IIC】【SPI】【网络驱动】【屏幕驱动】【一 设备树】【二 内核模块编译】【三 基本驱动框架】【四 Platform总线设备驱动框架】【五 驱动子系统】【六 综合】 2026/7/15 0:07:01
Git reset 与 revert 深度对比:5个关键差异与 3 种典型应用场景 Git Reset 与 Revert 深度对比:5个关键差异与3种典型应用场景在团队协作开发中,代码版本管理如同行走钢丝——一步失误可能导致整个项目陷入混乱。作为Git进阶用户,你是否曾在深夜面对错误的提交束手无策?是否在强制推送后收到同事… 2026/7/13 8:31:55
GitHub 学生包申请避坑:5个常见失败原因与开发者工具调试方案 GitHub 学生包申请技术排障指南:5个高频失败场景与开发者工具实战方案第一次尝试申请GitHub学生包时,我盯着屏幕上那个不断转圈的加载动画整整15分钟,最终只等来了一行冰冷的错误提示。这可能是许多开发者共同的经历——明明按照教程操作&… 2026/7/14 18:25:04
冒烟测试用例设计规范:5%-10%覆盖率下的3类核心场景与执行标准 冒烟测试用例设计的黄金法则:5%-10%覆盖率下的精准筛选策略在快节奏的敏捷开发环境中,冒烟测试作为质量保障的第一道防线,其重要性不言而喻。当测试资源有限而时间紧迫时,如何从海量测试用例中精准筛选出那关键的5%-10%࿰… 2026/7/14 5:09:41