zoukankan      html  css  js  c++  java
  • 排列组合问题

    这里写图片描述
    这里写图片描述

    这数据写个暴力都拿不了30分 T_T。
    C(n,i)*C(n,i)=C(n,i)*C(n,n-i) => 结合现实意义,在n个里面选 i 个,再在n个里面选n-i个的方案数。
    就等价于在前n个中选 i 个,在后n各种选n-i个。而且i = 0~n => 在2*n各种选n个。
    那么这里写图片描述=C(2*n,n);

    答案要对1000000007取模,需要逆元(可用费马小定理,下面是式子)

    C(2n,n)modp=(2n)!(n!n!)xmodp(x=p2)

    #include<iostream>
    #include<cstring>
    #include<cmath>
    #include<cstdio>
    #include<algorithm>
    #define LL long long
    #define MOD 1000000007
    #define N 1000000
    using namespace std;
    int T;
    LL ans,P[2000009],n;
    void init()
    {
        LL p=1;
        for(LL i=1;i<=2*N;i++) p=(p*i)%MOD,P[i]=p;
    }
    LL Fast_Pow(LL x,LL p)//x^p 
    {
        LL t1=1,t2=x;
        while(p)
        {
            if(p%2==1) t1=(t1*t2)%MOD;
            t2=(t2*t2)%MOD;
            p/=2;
        }
        return t1%MOD;
    }
    LL get_ans(int x)
    {
        return (P[2*x]*Fast_Pow(P[x]*P[x]%MOD,MOD-2))%MOD;
    }
    int main()
    {
        init();
        scanf("%d",&T);
        while(T--)
        {
            scanf("%d",&n);
            ans=get_ans(n);
            printf("%lld
    ",ans);
        }   
        return 0;
    }
  • 相关阅读:
    POJ2965(The Pilots Brothers' refrigerator)
    POJ1753(Flip Game)
    POJ3253(Fence Repair)
    山东理工大学的训练计划
    loutsScript 常用代码
    《大道至简》读后感
    2019暑第三周
    2019暑第二周
    2019暑第一周
    关于13组作品《TD tree》的使用感想
  • 原文地址:https://www.cnblogs.com/dfsac/p/7587796.html
Copyright © 2011-2022 走看看