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
思路: 我们从左上走到右下 一共要往下走n-1次 往右走 m-1次 一共走了 n+m-2次但是不同的地方可以在向下走(n-1)次 或者向右走(m-1)次 所以我们在这里有C(n+m-2,n-1)或者
C(n+m-2,m-1)种走法 这两种是相同的。而我们在运算时 对组合数取余 由于组合数存在除法, 而取余不能再商之后取余,所以这里我们需要将除法转换成乘法来做。
 (( A!)/(B!)) % P等价于(A! * (B!)^-1)%P 而 B!^-1 成为B!的逆元由费马小定理可知 B!^-1 = B^(P-2)  然后B^P-2 可以由快速幂来求 
  PS:这里的P要求为质数
 #include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
typedef long long LL;
const LL mod = 1e9+;
LL m,n;
LL Pow(LL a,LL b)//快速幂 a的b次方
{
LL ans=;
while(b)
{
if(b&)
ans=ans*a%mod;
b>>=;
a=a*a%mod;
}
return ans;
}
LL index(int x) //求阶乘取余
{
LL ans = ;
for(int i=;i<=x;i++)
ans = ans*i%mod;
return ans;
}
LL C(int a,int b)//组合数
{
LL ans = ;
ans = ans%mod * index(a)%mod;
ans = ans%mod * Pow(index(a-b),mod-)%mod;
ans = ans%mod * Pow(index(b),mod-)%mod; return ans%mod;
}
int main()
{
cin>>m>>n;
cout<<C(n+m-,n-)<<endl;
return ;
}

1119 机器人走方格 V2 (组合数学)的更多相关文章

  1. 51nod-1119 1119 机器人走方格 V2(组合数学+乘法逆元+快速幂)

    题目链接: 1119 机器人走方格 V2 基准时间限制:1 秒 空间限制:131072 KB    M * N的方格,一个机器人从左上走到右下,只能向右或向下走.有多少种不同的走法?由于方法数量可能很 ...

  2. 51nod 1118 机器人走方格 解题思路:动态规划 & 1119 机器人走方格 V2 解题思路:根据杨辉三角转化问题为组合数和求逆元问题

    51nod 1118 机器人走方格: 思路:这是一道简单题,很容易就看出用动态规划扫一遍就可以得到结果, 时间复杂度O(m*n).运算量1000*1000 = 1000000,很明显不会超时. 递推式 ...

  3. 1119 机器人走方格 V2(组合)

    1119 机器人走方格 V2 基准时间限制:1 秒 空间限制:131072 KB 分值: 10 难度:2级算法题 M * N的方格,一个机器人从左上走到右下,只能向右或向下走.有多少种不同的走法?由于 ...

  4. 51nod 1119 机器人走方格 V2

    1119 机器人走方格 V2  基准时间限制:1 秒 空间限制:131072 KB 分值: 10 难度:2级算法题  收藏  关注 M * N的方格,一个机器人从左上走到右下,只能向右或向下走.有多少 ...

  5. 1119 机器人走方格 V2

    1119 机器人走方格 V2 基准时间限制:1 秒 空间限制:131072 KB M * N的方格,一个机器人从左上走到右下,只能向右或向下走.有多少种不同的走法?由于方法数量可能很大,只需要输出Mo ...

  6. 51nod 1119 机器人走方格 V2 【组合数学】

    挺水的但是我好久没写组合数了- 用这样一个思想,在1~m列中,考虑每一列上升几格,相当于把n-1个苹果放进m个篮子里,可以为空,问有几种方案. 这个就是一个组合数学经典问题了,考虑n个苹果放进m个篮子 ...

  7. 51nod1119 机器人走方格 V2

    终于学到了求组合数的正确姿势 //C(n+m-2,m-1) #include<cstdio> #include<cstring> #include<cctype> ...

  8. [51nod1119]机器人走方格V2

    解题关键: 1.此题用dp的方法可以看出,dp矩阵为杨辉三角,通过总结,可以得出 答案的解为$C_{n + m - 2}^{n - 1}$ 2.此题可用组合数学的思想考虑,总的步数一共有$n+m-2$ ...

  9. 51nod_1119:机器人走方格 V2

    题目链接: https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1119 转化成杨辉三角就好辣@_@ #include< ...

随机推荐

  1. ELK背景介绍1

    一.elasticsearch背景介绍 1.问题引入:搜索所有天安门相关的内容,大数据量的判断,加索引orm,歌词怎么做?等等问题,大公司上亿条数据怎样开发处理日志? 2.ELK框架,目前先学习E(e ...

  2. day39-Spring 05-Spring的AOP:不带有切点的切面

    Spring底层的代理的实现: 不带切点的切面是对类里面的所有的方法都进行拦截. 做Spring AOP的开发需要两个包:一个是AOP的包,一个是AOP联盟的包(因为规范是由AOP联盟提出来的). 用 ...

  3. 【JZOJ4878】【NOIP2016提高A组集训第10场11.8】时空传送

    题目描述 经过旷久的战争,ZMiG和707逐渐培养出了深厚的感♂情.他们逃到了另一块大陆上,决定远离世间的纷争,幸福地生活在一起.钟情707的neither_nor决心要把他们拆散,他要动用手中最大杀 ...

  4. 智能算法之Matlab实现(1)——遗传算法(1)

    遗传算法的过程在这里先不介绍了,可能在接下来的几篇文章会介绍,这里介绍些实用的. (1)Sheffield遗传算法工具箱的安装 我共享了下修改过文件名和后缀名的原版工具箱,地址为:http://pan ...

  5. Java数据类型分析

    Java的简单数据讲解列表如下: int:int为整数类型,存储的时候,用4个字节存储,范围为-2,147,483,648到2,147,483,647,在变量初始化的时候,int类型的默认值为0.   ...

  6. iOS 9 适配系列教程

    http://www.cocoachina.com/ios/20150703/12392.html 本文是投稿文章,作者:ChenYilong(https://github.com/ChenYilon ...

  7. @bzoj - 2395@ [Balkan 2011]Timeismoney

    目录 @description@ @solution@ @accepted code@ @details@ @description@ 有n个城市(编号从0..n-1),m条公路(双向的),从中选择n ...

  8. oracle函数 last_day(d1)

    [功能]:返回日期d1所在月份最后一天的日期. [参数]:d1,日期型 [返回]:日期 [示例]select sysdate,last_day(sysdate)  hz from dual; 返回:2 ...

  9. hdu 1434 幸福列车 (Leftist Tree)

    Problem - 1434 网上题解是普通的堆合并,都是用优先队列直接做的.可是正解的堆合并应该是用左偏堆或者斐波那契堆的吧,不然O(X * N ^ 2)的复杂度应该是过不了的.斐波那契堆的实现相对 ...

  10. windonws卸载已安装opencv,安装新版本

    主要步骤: 步骤一:卸载opencv-python(如果还有安装opencv-contrib-python,也需要卸载) 步骤二:安装新的opencv-python及opencv-contrib-py ...