zoukankan      html  css  js  c++  java
  • 牛客挑战赛33

    牛客挑战赛33

    组合数取模,插板。

    #include<bits/stdc++.h>
    using namespace std;
    #define ll long long
    int n,k;
    ll pow(ll a, ll b, ll m)
    {
        ll ans = 1;
        a %= m;
        while(b)
        {
            if(b & 1)ans = (ans % m) * (a % m) % m;
            b /= 2;
            a = (a % m) * (a % m) % m;
        }
        ans %= m;
        return ans;
    }
    ll inv(ll x, ll p)//x关于p的逆元,p为素数
    {
        return pow(x, p - 2, p);
    }
    ll C(ll n, ll m, ll p)//组合数C(n, m) % p
    {
        if(m > n)return 0;
        ll up = 1, down = 1;//分子分母;
        for(int i = n - m + 1; i <= n; i++)up = up * i % p;
        for(int i = 1; i <= m; i++)down = down * i % p;
        return up * inv(down, p) % p;
    }
    ll Lucas(ll n, ll m, ll p)
    {
        if(m == 0)return 1;
        return C(n % p, m % p, p) * Lucas(n / p, m / p, p) % p;
    }
    int main(){
        ll p=1e9+7;
        cin>>n>>k;
        if(n==0){
           cout<<1<<endl; 
           return 0;
        }
        if(k%2==0)n--,k--; 
        printf("%d
    ",C(n-(k-1)/2-1,(k-1)/2,p)); 
    } 
    作者:wilxx
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.
  • 相关阅读:
    spring 注解笔记
    spring boot 拦截器
    spring boot 启动流程及其原理
    Spring之BeanFactory和FactoryBean接口的区别
    微信支付
    三级联动
    搜索分页
    多选标签
    分类界面 大分类小分类
    触底下拉
  • 原文地址:https://www.cnblogs.com/wilxx/p/11700454.html
Copyright © 2011-2022 走看看