算法基础之组合数 II

算法基础之组合数 II

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

    • 前置:C^b^~a~ = a! /(b! * (a-b)!)
      • fac[a] * infac[b] * infac[a-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;
      }
  }
相关推荐
jiayoushijie-泽宣1 小时前
【基于语义地图的机器人路径覆盖】Radiant Field-Informed Coverage Planning (RFICP)高斯扩散场轨迹规划算法详解
人工智能·算法·3d·机器人
Coovally AI模型快速验证2 小时前
【YOLO算法改进】ALSS-YOLO:无人机热红外图像|野生动物小目标检测
人工智能·算法·yolo·目标检测·机器学习·目标跟踪·无人机
yonuyeung2 小时前
代码随想录算法【Day7】
算法·leetcode·哈希算法
湫ccc3 小时前
《机器学习》KNN算法实现手写数字识别
人工智能·算法·机器学习
蚰蜒螟3 小时前
mysql8 从C++源码角度看 客户端发送的sql信息 mysql服务端从网络读取到buff缓存中
网络·c++·sql
老大白菜3 小时前
python 选择排序(Selection Sort)
python·算法·排序算法
酒鬼猿3 小时前
基础算法--滑动窗口
算法
叶子2024224 小时前
labelme下载
java·jvm·算法
计算机萍萍学姐4 小时前
ArrayList和LinkedList的区别是什么?
java·数据结构·算法
jf加菲猫4 小时前
条款35:考虑虚函数以外的其它选择(Consider alternatives to virtual functions)
开发语言·c++