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
输出走法的数量Mod10^9+7。
Input示例
23
Output示例
3
 1 #include <iostream>
 2 #include <cstdio>
 3 
 4 using namespace std;
 5 typedef long long LL;
 6 const int p = 1e9 + 7;
 7 LL quick_mod(LL a, LL b) {
 8     LL ans = 1;
 9     a %= p;
10     while(b) {
11         if(b & 1) {
12             ans = ans * a % p;
13             b--;
14         }
15         b >>= 1;
16         a = a * a % p;
17     }
18     return ans;
19 }
20 
21 LL C(LL n, LL m) {
22     if(m > n) return 0;
23     LL ans = 1;
24     for(int i=1; i<=m; i++) {
25         LL a = (n + i - m) % p;
26         LL b = i % p;
27         ans = ans * (a * quick_mod(b, p-2) % p) % p;
28     }
29     return ans;
30 }
31 LL Lucas(LL n, LL m) {
32     if(m == 0) return 1;
33     return C(n % p, m % p) * Lucas(n / p, m / p) % p;
34 }
35 int main() {
36     int k, T, n, m;
37     scanf("%d%d", &n, &m);
38     printf("%I64d\n", C(n+m-2, m-1));
39     return 0;
40 }

优质内容筛选与推荐>>
1、PHPExcel合并与拆分单元格
2、英文词频统计预备,组合数据类型练习
3、简述.NET运行时中的垃圾收集
4、php获取前一天,前一个月,前一年的时间
5、siege压力测试工具安装和介绍


长按二维码向我转账

受苹果公司新规定影响,微信 iOS 版的赞赏功能被关闭,可通过二维码转账支持公众号。

    阅读
    好看
    已推荐到看一看
    你的朋友可以在“发现”-“看一看”看到你认为好看的文章。
    已取消,“好看”想法已同步删除
    已推荐到看一看 和朋友分享想法
    最多200字,当前共 发送

    已发送

    朋友将在看一看看到

    确定
    分享你的想法...
    取消

    分享想法到看一看

    确定
    最多200字,当前共

    发送中

    网络异常,请稍后重试

    微信扫一扫
    关注该公众号





    联系我们

    欢迎来到TinyMind。

    关于TinyMind的内容或商务合作、网站建议,举报不良信息等均可联系我们。

    TinyMind客服邮箱:support@tinymind.net.cn