算法基础之组合数 II

算法基础之组合数 II

  • 核心思想:快速幂求逆元

    • 前置:Cba = a! /(b! * (a-b)!)
      • faca * infacb * infaca-b;
cpp 复制代码
  #include <iostream>
  #include <cstring>
  #include <algorithm>
  
  using namespace std;
  const int MOD = 1e9+7,N = 1e5+10;
  typedef long long LL;
  
  long long fac[N],infac[N];
  int n;
  
  int qmi(int a,int b,int k)  //快速幂求逆元
  {
      int res = 1;
      while(b)
      {
          if(b&1) res = (LL)res*a%k;
          b>>=1;
          a = (LL)a*a%k;
      }
      return res;
  }
  int main()
  {
      fac[0] = infac[0] = 1;
      for(int i=1;i<=100000;i++)  //预处理
      {
          fac[i] = fac[i-1] * i % MOD;
          infac[i] = (LL)infac[i-1] * qmi(i,MOD-2,MOD)%MOD;
      }
      cin>>n;
      while(n--)
      {
          int a,b;
          cin>>a>>b;
          //多%几次 会爆
          cout<<(LL)fac[a] * infac[b]%MOD * infac[a-b] %MOD<<endl;
      }
  }
相关推荐
郭涤生4 分钟前
C++ 高性能编程最佳实践清单
开发语言·c++
用户9874092388710 分钟前
llamafactory 0.6.3 没有 llamafactory-cli
算法
计算机安禾13 分钟前
【算法分析与设计】第26篇:参数化算法与固定参数可解性理论
大数据·人工智能·算法·机器学习·剪枝
.千余39 分钟前
【C++】C++类与对象2:C++构造函数、运算符重载与流输入输出全面解析
c语言·开发语言·前端·c++·经验分享
郭涤生1 小时前
C++ 高性能状态机
开发语言·c++
AI科技星1 小时前
基于**v=c(空间光速螺旋运动)唯一第一性原理**重新完整求导证明
人工智能·线性代数·算法·机器学习·架构·概率论·学习方法
风筝在晴天搁浅1 小时前
美团 LeetCode 692.前K个高频单词
算法·leetcode·职场和发展
酿情师1 小时前
Microsoft Visual C++ Build Tools 2026 下载与安装指南(Windows)
c++·windows·microsoft
cany10001 小时前
C++ -- 引用悬挂
c++
地平线开发者1 小时前
量化训练时 fusebn/withbn 简介
算法·自动驾驶