HDU-5698-瞬间移动

原创 2016年06月01日 18:15:17

Problem Description

有一个无限大的矩形,初始时你在左上角(即第一行第一列),每次你都可以选择一个右下方格子,并瞬移过去(如从下图中的红色格子能直接瞬移到蓝色格子),求到第n行第m列的格子有几种方案,答案对1000000007取模。

Input
多组测试数据。
两个整数n,m(2≤n,m≤100000)

Output
一个整数表示答案

Sample Input
4 5

Sample Output
10

Source
2016”百度之星” - 初赛(Astar Round2B)

Recommend
wange2014

题解

先打印一部分结果,可以发现,斜着看就是杨辉三角的一部分,杨辉三角的规律 :第n行第m个数就是 (a+b)的n次方的第m个多项式的系数。
这里用到卢卡斯定理,套个模板就好。

代码(C)

#include <stdio.h>
#include <string.h>
#define MOD 1000000007
typedef long long LL;

LL quickPower(LL a, LL b)
{
    LL ans = 1;
    a %= MOD;
    while (b)
    {
        if (b & 1)
        {
            ans = ans * a %MOD;
        }
        b >>= 1;
        a = a * a % MOD;
    }
    return ans;
}

LL c(LL n, LL m)
{
    if (m > n)
    {
        return 0;
    }
    LL ans = 1;
    for (int i = 1; i <= m; i++)
    {
        LL a = (n + i - m) % MOD;
        LL b = i % MOD;
        ans = ans * (a * quickPower(b, MOD - 2) % MOD) % MOD;
    }
    return ans;
}

LL lucas(LL n, LL m)
{
    if (m == 0)
    {
        return 1;
    }
    return c(n % MOD, m % MOD) * lucas(n / MOD, m / MOD) % MOD;
}

int main(int argc, const char * argv[])
{
    LL n, m;
    while (~scanf("%lld %lld", &n, &m))
    {
        LL max, min;
        max = n + m - 3;
        min = m - 1;
        printf("%lld\n", lucas(max - 1, min - 1));
    }
    return 0;
}
版权声明:听说这里让写版权声明~~~

相关文章推荐

Csdn Blog模板CSS代码(1):我心飞翔

 Csdn blog是一个有质量的blog,但是我认为好的UI更能吸引人阅读---------------------零度效果御览:点击看大图 换肤步骤:(1)进入csdn blog管理后台,打开配置...

CSDN Blog 界面个性化指南

一、使用“定制CSS选择器”展开个人Blog的选项>>配置页,在里面找到“定制CSS选择器”,此项的功能是重写原来的CSS和定制新的CSS样式。原CSS样式可将你的Blog页保存后,在相应的文件夹里的...
  • dlyhlq
  • dlyhlq
  • 2008年03月31日 02:45
  • 503

hdu5698 瞬间移动(组合数取摸)(16百度之星round2B)

Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Pro...
  • chat_c
  • chat_c
  • 2016年05月22日 23:00
  • 656

[hdu5698]: 瞬间移动(两种方法求组合数)

welcome to my blog!!! 瞬间移动 Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/65536 ...
  • xljer_
  • xljer_
  • 2017年06月28日 20:29
  • 139

Hdu 5698 瞬间移动【组合+逆元】

瞬间移动 Problem Description 有一个无限大的矩形,初始时你在左上角(即第一行第一列),每次你都可以选择一个右下方格子,并瞬移过去(如从下图中的红色格子能直接...

HDU 5698 瞬间移动(费马、逆元)

费马小定理

2016"百度之星" - 初赛(Astar Round2B)1003 瞬间移动(HDU5698)(逆元+快速幂)

2016”百度之星” - 初赛(Astar Round2B)1003 瞬间移动(HDU5698)(逆元+快速幂)Time Limit: 4000/2000 MS (Java/Others) ...

HDU 5698 瞬间移动 [数论] [逆元] [组合数取模]

瞬间移动 Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) Total Sub...

HDU-5698-瞬间移动(杨辉三角)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5698 Problem Description 有一个无限大的矩形,初始时你在左上角(即第一行...

hdu 5698 瞬间移动 -- (大组合数取模)

瞬间移动 Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Total Sub...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:HDU-5698-瞬间移动
举报原因:
原因补充:

(最多只允许输入30个字)