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

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

//挺懵逼的,虽然看出动规后是个杨辉三角,但不知道杨辉三角的性质,第 n 行 第 m 位为 C(n-1,m-1)  这也是组合数递推的性质 C(n,m)=C(n-1,m)+C(n-1,m-1)输出 C(n+m-2,m-1) 即可

 1 #include <bits/stdc++.h>
 2 using namespace std;
 3 #define LL long long
 4 #define MOD 1000000007
 5
 6 LL n,m;
 7
 8 LL qk_mi(LL a,LL b)
 9 {
10     LL res=1;
11     while (b)
12     {
13         if (b&1) res = res*a%MOD;
14         a=a*a%MOD;
15         b/=2;
16     }
17     return res;
18 }
19
20 LL J(int x)
21 {
22     LL res=1;
23     for (int i=2;i<=x;i++)
24         res=res*i%MOD;
25     return res;
26 }
27
28 LL C(LL x, LL y)
29 {
30     return J(x)*qk_mi(J(y)*J(x-y)%MOD,MOD-2)%MOD;
31 }
32
33 int main()
34 {
35     scanf("%lld%lld",&n,&m);
36     LL ans = C(n+m-2,m-1);
37     printf("%lld",ans);
38     return 0;
39 }

 
时间: 2024-10-10 08:51:06

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

1119 机器人走方格 V2

1119 机器人走方格 V2 基准时间限制:1 秒 空间限制:131072 KB 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思路:打个表找个规律,然后发现是组合数,然后取模费马小定理. 1 #in

51nod 1119 机器人走方格 V2 (组合数学+逆元)

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 分析:因为只能向

1119 机器人走方格 V2 (组合数学)

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)次

51_1118 机器人走方格(组合+乘法逆元)

这道题要注意的是: 当单纯的用组合累乘的话 1000!即使long long也会溢出 , 所以只能乘一下, mod一下, 但是这样分子分母算出来后, 分子/分母 肯定就已经不是答案(因为 分子%mod / 分母%mod != ans%mod ), 此时, 就要用到乘法逆元. ax ≡ 1(mod m) , 则 t1 * x * t2 mod m = t1 -> t1 / t2 = t1* x mod m (将除法转换成乘法, 保证 t1/t2 的结果为 ans%mod ) 1118 机器人走方格

[51nod1119]机器人走方格V2

解题关键: 1.此题用dp的方法可以看出,dp矩阵为杨辉三角,通过总结,可以得出 答案的解为$C_{n + m - 2}^{n - 1}$ 2.此题可用组合数学的思想考虑,总的步数一共有$n+m-2$步,在这所有的步数中,需要选择向下走的步数的位置,由此可得,答案的解为:$C_{n + m - 2}^{n - 1}$ 此题即可转化为大组合数取模问题: 1 #include<bits/stdc++.h> 2 using namespace std; 3 typedef long long ll;

51nod_1119:机器人走方格 V2

题目链接: https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1119 转化成杨辉三角就好辣@[email protected] #include<bits/stdc++.h> using namespace std; typedef long long LL; const LL mod=1e9+7; const LL M=2e6; LL fac[M+5]; //阶乘 LL inv_of_fac[M+5]; //阶乘的

[51NOD1119]机器人走方格 V2(dp,Lucas定理)

题目链接:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1119 题意:中文题面. 很容易知道式子dp(i,j)=dp(i-1,j)+dp(i,j-1),又知道从左上到右下一定是n+m-2步,打个表出来看m=1或n=1的时候结果是n或者m,m=2的时候结果是3.6.10... 猜想结果是C(n+m-2,k),带入值把k求出来,k是和n有关的,k=n-1. 所以结果是C(n+m-2,n-1).大组合数要对素数取模,结果可

1122 机器人走方格 V4

1122 机器人走方格 V4 基准时间限制:1 秒 空间限制:131072 KB 四个机器人a b c d,在2 * 2的方格里,一开始四个机器人分别站在4个格子上,每一步机器人可以往临近的一个格子移动或留在原地(同一个格子可以有多个机器人停留),经过n步后有多少种不同的走法,使得每个毯子上都有1机器人停留.由于方法数量巨大,输出 Mod 10^9 + 7的结果. Input 输入1个数N(0 <= N <= 10^9) Output 输出走法的数量 Mod 10^9 + 7 Input示例

1120 机器人走方格 V3

1120 机器人走方格 V3 基准时间限制:1 秒 空间限制:131072 KB N * N的方格,从左上到右下画一条线.一个机器人从左上走到右下,只能向右或向下走.并要求只能在这条线的上面或下面走,不能穿越这条线,有多少种不同的走法?由于方法数量可能很大,只需要输出Mod 10007的结果. Input 输入一个数N(2 <= N <= 10^9). Output 输出走法的数量 Mod 10007. Input示例 4 Output示例 10 思路:这个在对角线的上方,就可以转换为,火车进