zoukankan      html  css  js  c++  java
  • HDU 6114 Chess

    Chess

    思路:求C(n,m),除法取余用乘法逆元算。

    代码:

    #include<bits/stdc++.h>
    using namespace std;
    #define ll long long
    #define pb push_back
    #define mem(a,b) memset((a),(b),sizeof(a))
    const int MOD=1e9+7;
    
    ll e_gcd(ll a,ll b,ll &x,ll &y)
    {
        if(!b)
        {
            x=1;
            y=0;
            return a;
        }
        ll ans=e_gcd(b,a%b,x,y);
        ll temp=x;
        x=y;
        y=temp-a/b*y;
        return ans;
    }
    ll inv(ll a,ll n)
    {
        ll x,y,d=e_gcd(a,n,x,y);
        if(d==1)return (x%n+n)%n;
        else return -1;
    }
    
    ll C(ll n,ll m)
    {
        ll ans=1;
        for(ll i=n;i>=n-m+1;i--)ans=(ans*i)%MOD;
        for(ll i=1;i<=m;i++)ans=((ans%MOD)*(inv(i,MOD)%MOD))%MOD;
        return ans; 
    }
    int main()
    {
        int n,m;
        int t;
        cin>>t;
        while(t--)
        {
            cin>>n>>m;
            if(n<m)swap(n,m);
            int ans=C(n,m);
            cout<<ans<<endl;
        }
        return 0;
    }
  • 相关阅读:
    作业
    复习整理3
    复习整理2
    复习整理1
    书籍-os 相关
    书籍正则
    书籍
    SocketServer 简化编写网络服务器的步骤
    socket 粘包
    经典排序算法
  • 原文地址:https://www.cnblogs.com/widsom/p/7353826.html
Copyright © 2011-2022 走看看