886. 求组合数 II

#include<bits/stdc++.h>

using namespace std;

typedef long long LL;

const int N=100010,mod=1e9+7;

int fact[N],infact[N];

int qmi(int a,int k,int p)
{
   
    int res=1;
    while(k)
    {
   
        if(k&1)
        {
   
            res=(LL)res*a%p;
        }
        a=(LL)a*a%p;
        k>>=1;
    }
    return res;
}

int main()
{
   
    fact[0]=infact[0]=1;
    for(int i=1;i<N;i++)
    {
   
        fact[i]=(LL)fact[i-1]*i%mod;
        infact[i]=(LL)infact[i-1]*qmi(i,mod-2,mod)%mod;
    }
    
    int n;
    cin>>n;
    while(n--)
    {
   
        int a,b;
        cin>>a>>b;
        
        cout<<(LL)fact[a]*infact[b]%mod*infact[a-b]%mod<<endl;
    }
    
    return 0;
}

上一题使用递推来求解,这一题使用公式来求解,因为这一题的数据范围更大

公式是这个

在这里插入图片描述
使用公式就行,把阶乘和逆元预处理出来,逆元预处理的时候要使用快速幂模板,算法基础课基本就是背模板就行了,我的任务就是像背单词一样背模板就行了

两个int数据范围的数字相乘不会超出long long的数据范围,但是3个相乘就会超过,所以两个数相乘就要取一次模

以上

相关推荐

  1. python数据分析numpy基础之var组方

    2024-01-18 13:14:02       26 阅读
  2. 7-3

    2024-01-18 13:14:02       40 阅读
  3. 40. 组合总和 II

    2024-01-18 13:14:02       37 阅读
  4. 264. 丑 II

    2024-01-18 13:14:02       35 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-01-18 13:14:02       17 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-01-18 13:14:02       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-01-18 13:14:02       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-01-18 13:14:02       18 阅读

热门阅读

  1. 页面嵌入iframe Cookie丢失问题解决

    2024-01-18 13:14:02       37 阅读
  2. python list.sort方法和内置函数sorted

    2024-01-18 13:14:02       34 阅读
  3. CTF - Web 干货

    2024-01-18 13:14:02       35 阅读
  4. jquery批量执行任务实时返回状态

    2024-01-18 13:14:02       37 阅读
  5. 006 Golang-channel-practice 并发打印字符串

    2024-01-18 13:14:02       33 阅读