zoukankan      html  css  js  c++  java
  • hdu 5698 瞬间移动(排列组合)

      这题刚看完,想了想,没思路,就题解了 = =

      但不得不说,找到这个题解真的很强大,链接:http://blog.csdn.net/qwb492859377/article/details/51478117 

      这个我只是看了他的思路,之后代码就自己写,之后交上去就是1A,我感觉好的题解就应该是这样的,Orz

      要先看下他的思路,现在我在补充些我的理解: 首先,你要把行,列分开看,先说行,从1到n,1和n都不能走,因为1是开始,n是确定的,所以你有n-2种选择,你可以枚举x从1到n-2,就相当于高中学的,在n-2个箱子中放x个相同小球,有几种情况?  同理,列也是,但注意在同一个x时他们还要相乘,这很明显,因为不可能相加。

      最后ans还要加1,因为从1,1直接到n,m的这种情况还没算。还有就是算C(n,k)了,这就是套模板了,没什么说的。

    #include <bits/stdc++.h>
    using namespace std;
    
    const int INF=0x3f3f3f3f;
    typedef long long ll;
    #define PI(A) printf("%d
    ",A)
    #define SI(N) scanf("%d",&(N))
    #define SII(N,M) scanf("%d%d",&(N),&(M))
    #define cle(a,val) memset(a,(val),sizeof(a))
    #define rep(i,b) for(int i=0;i<(b);i++)
    #define Rep(i,a,b) for(int i=(a);i<=(b);i++)
    #define reRep(i,a,b) for(int i=(a);i>=(b);i--)
    const double EPS= 1e-9 ;
    
    /*  /////////////////////////     C o d i n g  S p a c e     /////////////////////////  */
    
    const int MAXN= 100000 + 5 ;
    const int MOD=1e9+7 ;
    ll jiech[MAXN];//求阶乘取完模的数组
    
    int N,M;
    
    //快速幂模板
    ll mod_pow(ll x,ll n,ll mod)
    {
        ll res=1;
        while(n>0){
            if (n&1) res=res*x%mod;
            x=x*x%mod;
            n>>=1;
        }
        return res;
    }
    
    //求C(n,k)的函数 (n在C下面,k在C上面)
    //限制:MOD必须是质数,因为是用费马小定理求的
    ll C(int n,int k)
    {
        ll d=(jiech[k]*jiech[n-k])%MOD;
        return (jiech[n]*mod_pow(d,MOD-2,MOD))%MOD;
    }
    
    
    int main()
    {
        //先打表阶乘取模数组
        jiech[1]=jiech[0]=1;
        for (int i=2;i<MAXN;i++)
        {
            jiech[i]=(jiech[i-1]*i)%MOD;
        }
    
        while(~SII(N,M))
        {
            
            int k=min(N,M);
            int k2=max(N,M);
            ll ans=0;
            //要根据小的那个循环
            for (int i=1;i<=k-2;i++)
            {
                ans+=C(k-2,i)*C(k2-2,i);
                ans%=MOD;
            }
            printf("%lld
    ",ans+1);
        }
    
        return 0;
    }
  • 相关阅读:
    robotframework框架
    pytest系列(四)- pytest+allure+jenkins
    robotframework框架
    接口测试时遇到 java 代码加密请求数据,用 python 的我该怎么办?
    selenium原理应用
    pytest系列(一):什么是单元测试界的高富帅?
    python appium搭建app自动化测试环境
    python selenium
    python3.4 + pycharm 环境安装 + pycharm使用
    requests(三):json请求中中文乱码处理
  • 原文地址:https://www.cnblogs.com/s1124yy/p/5674683.html
Copyright © 2011-2022 走看看