小红买基金(组合数)--牛客周赛 Round 13

小红买基金(组合数)--牛客周赛 Round 13_第1张图片

示例1

输入

5 2 3
1 2
1 4
3 1
5 4
3 2

输出

3

小红买基金(组合数)--牛客周赛 Round 13_第2张图片 解析:

        统计所有可以购买的基金个数 cnt ,然后遍历cnt,每次取出 i 种,预处理组合数。

#include
using namespace std;
#define int long long
const int N=2e5+5,mod=1e9+7;
int n,a,b,cnt,res;
int fact[N],infact[N];
int qmi(int a,int k,int p){
	int res=1;
	while(k){
		if(k&1) res=res*a%p;
		a=a*a%p;
		k>>=1;
	}
	return res;
}
void init(){
	fact[0]=infact[0]=1;
	for(int i=1;i=a&&y<=b) cnt++;
	}
	for(int i=1;i<=cnt;i++){
		res+=fact[cnt]*infact[i]%mod*infact[cnt-i]%mod;
	}
	cout<

你可能感兴趣的:(牛客,算法,c语言,c++,数据结构,开发语言,组合数)