zoukankan      html  css  js  c++  java
  • codevs 1515 跳

    /*
    画矩阵找规律发现是杨辉三角 Cg (i,j)= C (i+j,i);
    贪心走的话 沿着0行(列)一直走然后拐直角
    拐弯后每个格子都累加 
    Cg (n,0) + Cg (n,1) + Cg (n,2) + ... +Cg (n,m)  有n>m
    即  C(n+0,n) + C (n+1,n) + C (n+2,n) + ... +C (n+m,n) 
    上式 = C (n+m+1,m);
    然后 ans = n + C (n+m+1,m);
    考虑到n m很大 用Lucas定理 
    之前敲得Lcs都是用数组存阶乘 哪里的mod较小
    这里10^9+7 显然存不下 所以直接每次都求一下 
    */
    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #define ll long long
    #define mod 1000000007
    using namespace std;
    ll Mi(ll a,ll b)
    {
        if(b==0)return 1;
        ll x=Mi(a,b/2)%mod;
        x=x*x%mod;
        if(b&1)x=x*a%mod;
        return x;
    }
    ll C(ll n,ll m)
    {
        if(m>n)return 0;
        ll nmj=1,mj=1;
        for(ll i=n;i>=n-m+1;i--)
          nmj=nmj*i%mod;
        for(int i=1;i<=m;i++)//开始以为这句会导致T 后然认真读读题目发现想多了0.0 
          mj=mj*i%mod;
        return (nmj*Mi(mj,mod-2))%mod;
    }
    ll Lcs(ll n,ll m)
    {
        if(m==0)return 1;
        return C(n%mod,m%mod)*Lcs(n/mod,m/mod);
    }
    int main()
    {
        ll n,m;
        cin>>n>>m;
        if(n<m)swap(n,m);
        printf("%lld",(n+Lcs(n+m+1,m))%mod);
    }
  • 相关阅读:
    js原型链
    charles重放攻击2
    charles攻击重放测试网页
    js逆向基础知识
    js重放攻击
    js逆向之 中间人攻击-js注入
    修改jadx默认内存
    frida-ida hook操作
    关于ios 9系统完全越狱frida安装不上的的问题
    IDA 静态调试和动态调试
  • 原文地址:https://www.cnblogs.com/yanlifneg/p/5525011.html
Copyright © 2011-2022 走看看