zoukankan      html  css  js  c++  java
  • 洛谷—— P1375 小猫

    https://www.luogu.org/problemnew/show/1375

    题目描述

    有2n只小猫站成一圈,主人小明想把它们两两之间用绳子绑住尾巴连在一起。同时小明是个完美主义者,不容许看到有两根绳子交叉。请问小明有几种连线方案,可以把让所有小猫两两配对?

    方案数很大,仅需输出方案数模1000000007(一个质数)的值。

    数据范围:

    60% N<=100

    100% N<=100000

    输入输出格式

    输入格式:

    输入一个整数n

    输出格式:

    输出方案数对1000000007取模的值

    输入输出样例

    输入样例#1: 复制
    3
    输出样例#1: 复制
    5


    卡特兰数组合公式C(2*n,n)-C(2*n,n-1)
     1 #include <cstdio>
     2 
     3 #define LL long long
     4 
     5 inline void read(int &x)
     6 {
     7     x=0; register char ch=getchar();
     8     for(; ch>'9'||ch<'0'; ) ch=getchar();
     9     for(; ch>='0'&&ch<='9'; ch=getchar()) x=x*10+ch-'0';
    10 }
    11 
    12 const int P(1000000007);
    13 
    14 LL fac[500005];
    15 
    16 inline LL Pow(LL a,LL b)
    17 {
    18     LL ret=1;
    19     for(; b; b>>=1,a*=a,a%=P)
    20         if(b&1) ret*=a,ret%=P;
    21     return (int)ret;
    22 }
    23 
    24 LL C(LL n,LL m)
    25 {
    26     return fac[n]*Pow(fac[m],P-2)%P*Pow(fac[n-m],P-2)%P;
    27 }
    28 
    29 int Presist()
    30 {
    31     int n; read(n); fac[0]=1;
    32     for(int i=1; i<=n<<1; ++i) fac[i]=1ll*fac[i-1]*i%P;
    33     printf("%lld
    ",(C(n<<1,n)-C(n<<1,n-1)+P)%P);
    34     return 0;
    35 }
    36 
    37 int Aptal=Presist();
    38 int main(int argc,char**argv){;}
  • 相关阅读:
    spring详解(五)——事物管理
    spring详解(四)——JDBC
    spring详解(三)——AOP
    Spring详解(二)
    Spring详解(一)
    springMVC(九)——restful风格和异常处理
    Linux 文件权限
    如何使用Git从GitHub上下载项目
    Spring(1)
    SpringMvc(4)
  • 原文地址:https://www.cnblogs.com/Shy-key/p/7896367.html
Copyright © 2011-2022 走看看