zoukankan      html  css  js  c++  java
  • 1119 机器人走方格 V2 (逆元,杨辉三角,数学)

    基准时间限制:1 秒 空间限制:131072 KB 分值: 10 难度:2级算法题
     收藏
     关注
    M * N的方格,一个机器人从左上走到右下,只能向右或向下走。有多少种不同的走法?由于方法数量可能很大,只需要输出Mod 10^9 + 7的结果。
     
    Input
    第1行,2个数M,N,中间用空格隔开。(2 <= m,n <= 1000000)
    Output
    输出走法的数量 Mod 10^9 + 7。
    Input示例
    2 3
    Output示例

    3

    AC:代码

    #include<cstdio>
    #include<iostream>
    #include<cstring>
    #include<algorithm>
    #include<vector>
    using namespace std;
    typedef long long ll;
    #define Mod 1000000007
    const int maxn = 2000003 ;
    ll vis[maxn];
     
    void init()
    {
        vis[0] = 1;
        for(ll i = 1;i<maxn;i++) vis[i] = (vis[i-1]*i)%Mod;
    }
    ll e_gcd(ll a,ll b,ll &x,ll &y)
    {
        if(b==0)
        {
            x = 1;
            y = 0;
            return a;
        }
        ll ans = e_gcd(b,a%b,x,y);
        ll temp = x;
        x = y;
        y = temp-a/b*y;
        return ans;
    }
    ll inv(ll s)
    {
        ll x,y;
        e_gcd(s,Mod,x,y);
        return (x+Mod)%Mod;
    }
    int main()
    {
        ll a,b;
        init();
        scanf("%lld %lld",&a,&b);
        ll c,d;
        c = a+b-2;
        d = a -1;
        printf("%lld
    ",(vis[c]%Mod*inv(vis[c-d])%Mod*inv(vis[d])%Mod));
        return 0;
    }
  • 相关阅读:
    Python字符串的encode与decode
    python数据操作方法封装
    python的继承
    python常用模块
    python导入模块和包的使用
    python实现curl功能
    [转]Java反射机制详解
    kafka入门
    [转]Servlet的学习之Filter过滤器技术
    [转]Java泛型
  • 原文地址:https://www.cnblogs.com/Nlifea/p/11746024.html
Copyright © 2011-2022 走看看