zoukankan      html  css  js  c++  java
  • 51nod 1120 机器人走方格 V3 【卡特兰数+卢卡斯定理+组合数】

    …我并不知道为什么事卡特兰数,反正用dp打的表就是卡特兰数,因为是两个三角所以再乘个2
    卡特兰数使用( h(n)=frac{C_{2n}^{n}}{n+1} )因为范围比较大所以组合数部分用卢卡斯定理来求。

    #include<iostream>
    #include<cstdio>
    #include<cstdlib>
    #include<algorithm>
    using namespace std;
    const int mod=10007,N=10020;
    int n,fac[N],inv[N];
    int ksm(int a,int b)
    {
    	a=a%mod;
    	int r=1;
    	while(b)
    	{
    		if(b&1)
    			r=r*a%mod;
    		a=a*a%mod;
    		b>>=1;
    	}
    	return r;
    }
    int C(int n, int m)
    {
        if(n<m)
            return 0;
        return fac[n]*inv[m]%mod*inv[n-m]%mod;
    }
    int lucas(int n,int m)
    {
        return m==0?1:C(n%mod,m%mod)*lucas(n/mod,m/mod)%mod;
    }
    int main()
    {
        fac[0]=1;
        for(int i=1;i<mod;i++)
            fac[i]=fac[i-1]*i%mod;
        inv[mod-1]=ksm(fac[mod-1],mod-2);
        for(int i=mod-2;i>=0;i--)
            inv[i]=inv[i+1]*(i+1)%mod;
        scanf("%d",&n);
        n--;
        printf("%d
    ",(lucas(n<<1,n)+mod-lucas(n<<1,n-1))%mod*2%mod);
        return 0;  
    }
    
  • 相关阅读:
    hinge loss
    KL散度
    pygame 学习
    pytorch 反向传播
    在线画数学函数图
    recover deleted files
    98个关键点的人脸
    Pytorch详解BCELoss和BCEWithLogitsLoss
    one hot vector
    Effective C++
  • 原文地址:https://www.cnblogs.com/lokiii/p/8336654.html
Copyright © 2011-2022 走看看