• D与C(牛客)



    分析一下就是一个简单的数论组合数
    唯一注意的就是要用逆元,否则要写挂
    容斥:ans=总方案数-两个图毫不相干的方案数
    总方案数=C((n(n-1)/2),a)×C((n(n-1)/2,b);
    毫不相干=C((n(n-1)/2),a)×C((n(n-1)/2-a,b);

    #include<bits/stdc++.h>
    using namespace std;
    #define lowbit(x) x&(-x)
    #define ll long long
    const int mod=1e9+7; 
    ll fastmi(ll a,ll b){
    	ll sum=1;
    	while(b){
    		if(b&1)sum=sum*a%mod;
    		a=a*a%mod;
    		b>>=1;
    	}
    	return sum;
    }
    ll inv(ll a){
    	return fastmi(a,mod-2)%mod;
    }
    int main(){
    	int n,a,b;
    	cin>>n>>a>>b;
    	int m=(n-1)*n/2,cc=m-a;
    	ll fz1=1,fm1=1,fz2=1,fm2=1,fz3=1,fm3=1;
    	for(int i=m;i>=(m-a+1);i--)fz1=(fz1*i)%mod;
    	for(int i=1;i<=a;i++)fm1=(fm1*i)%mod;
    	for(int i=m;i>=(m-b+1);i--)fz2=(fz2*i)%mod;
    	for(int i=1;i<=b;i++)fm2=(fm2*i)%mod;
    	for(int i=cc;i>=(cc-b+1);i--)fz3=(fz3*i)%mod;
    	for(int i=1;i<=b;i++)fm3=(fm3*i)%mod;
    	ll t1=(fz1*inv(fm1))%mod;
    	ll t2=(fz2*inv(fm2))%mod;
    	ll t3=(fz3*inv(fm3))%mod;
    	cout<<t1*(t2-t3+mod)%mod; 
         return 0;
    }
  • 相关阅读:
    SSM简单实现文件上传和下载
    Web发送邮件
    scala写算法-快排
    scala写算法-从后缀表达式构造
    scalajs_初体验
    scala写算法-用小根堆解决topK
    scala-Future和Promise
    python基础之函数
    python基础知识(五)
    python基础知识(四)
  • 原文地址:https://www.cnblogs.com/wzxbeliever/p/15675064.html
Copyright © 2020-2023  润新知