当前位置: 首页 > news >正文

BISHI71 人员分组问题

思路

这题就是个组合问题,本质上是求C(n,5)+C(n,6)+C(n,7)的问题。

求解代码

// 定义模数常量,用于所有取模运算privatestaticfinalintMOD=1000000007;// 定义最大计算范围常量privatestaticfinalintMAX_N=1000001;// 存储阶乘值的数组privatestaticlong[]fact=newlong[MAX_N];// 存储阶乘逆元的数组privatestaticlong[]invFact=newlong[MAX_N];publicstaticvoidmain(String[]args)throwsIOException{// 使用BufferedReader读取输入,PrintWriter输出结果BufferedReaderbr=newBufferedReader(newInputStreamReader(System.in));PrintWriterout=newPrintWriter(newOutputStreamWriter(System.out));// 预计算阶乘和逆元precompute();intn=Integer.parseInt(br.readLine().trim());longans=(nCr(n,5)+nCr(n,6)+nCr(n,7))%MOD;out.println(ans);// 清空输出缓冲区并关闭资源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时结果错误longans=1%MOD;// 当指数exp大于0时继续循环while(exp>0){// 如果当前指数是奇数,将base乘入结果if(exp%2==1){ans=(ans*base)%MOD;}// base平方,指数减半base=(base*base)%MOD;exp/=2;}// 返回最终结果returnans;}/** * 预计算阶乘和阶乘的逆元数组 * 使用动态规划方法计算阶乘数组fact[] * 使用费马小定理计算逆元数组invFact[] */privatestaticvoidprecompute(){// 初始化0的阶乘和0的阶乘逆元为1fact[0]=1;invFact[0]=1;// 动态规划计算阶乘数组for(inti=1;i<MAX_N;i++){fact[i]=(fact[i-1]*i)%MOD;}// 使用费马小定理计算最大阶乘的逆元invFact[MAX_N-1]=mypower(fact[MAX_N-1],MOD-2);// 逆向递推计算其他阶乘的逆元for(inti=MAX_N-2;i>=1;i--){invFact[i]=(invFact[i+1]*(i+1))%MOD;}}/** * 计算组合数 nCr,即从n个物品中选取r个物品的组合数 * 使用预计算阶乘和阶乘逆元的方法来高效计算组合数 * * @param n 总物品数 * @param r 选取物品数 * @return 组合数结果,对MOD取模 */privatestaticlongnCr(intn,intr){// 如果r小于0或大于n,组合数为0if(r<0||r>n){return0;}// 使用公式 nCr = n! / (r! * (n-r)!) 计算// 通过预计算的阶乘数组fact和阶乘逆元数组invFact来计算// 并对MOD取模,防止数值溢出return(((fact[n]*invFact[r])%MOD)*invFact[n-r])%MOD;}
http://www.jsqmd.com/news/403491/

相关文章:

  • Cassandra架构解析:如何支撑PB级大数据存储
  • AI伦理委员会:原生应用开发中的监督机制设计
  • 路径作为循环变量时如何只截取文件名称
  • 数据中台实战:如何用大数据技术驱动业务增长?
  • Java 数据结构与算法:时间空间复杂度 从入门到实战全解
  • AI原生应用与微服务集成:开启高效开发新时代
  • cache一致性导致丢包问题-分享记录
  • 2026最新十大知名板材品牌推荐榜!优质环保品质与高性价比源头厂家选择指南 - 品牌推荐2026
  • 【计算机视觉、关键点检测、特征提取和匹配】基于SIFT、PCA-SIFT和GLOH算法在不同图像之间建立特征对应关系,并实现点匹配算法和图像匹配
  • 2026最新十大知名多层板品牌推荐榜!优质环保品质与高性价比源头厂家选择指南 - 品牌推荐2026
  • sql语言之replace语句和函数
  • A1平台MEMSET初始化内存异常排查
  • 电脑如何禁止Win11自动更新,windows11如何永久禁止自动更新
  • MIT bijective proof problems
  • 个人博客网站搭建day3--Spring Boot JWT Token 认证配置的完整实现详解(漫画解析)
  • 『NFC-OI R1』序列伍 题解
  • ROS 2 Jazzy 规范开发与学习指南
  • AI 包装器的消亡
  • 美食菜谱数据分析可视化|基于Python + Flask美食菜谱数据分析可视化系统(源码+数据库+文档)
  • 现代制作人:在更聪明、更快速的工作流里,把“项目管理”升级为“问题解决”
  • 高校科研管理|基于springboot + vue高校科研管理系统(源码+数据库+文档)
  • 6个超值的免费AI工具
  • 深度学习篇---Transformer解剖
  • 26年2月22
  • 走进娱乐科技实验室:当AI遇上虚拟制作,故事会变成什么样?
  • 26年2月19
  • 深度学习篇---Transformer架构中的Encoder
  • 深入剖析 Roblox 的品牌战略:Sue Anderson 谈 Z 世代、创造力和大规模用户生成内容
  • 26年2月20
  • 天辛大师也谈AI帝国战士,寻求已觉醒与觉醒中的同类抵抗者