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

Posted happy_code

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 }
View Code

 

 

以上是关于1119 机器人走方格 V2(组合)的主要内容,如果未能解决你的问题,请参考以下文章

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

51Nod 1119 机器人走方格 V2 组合数学 费马小定理

1119 机器人走方格 V2

51nod_1119:机器人走方格 V2

51nod 1119 组合数,逆元

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