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;
}
版权声明:听说这里让写版权声明~~~

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

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

变态跳台阶,最终导向HDU_5698_瞬间移动

参考了http://blog.csdn.net/qwb492859377/article/details/51478117 然而我要写的是另一个题目 变态跳台阶 参与人数:8361时间限制:1...
  • wsyxhwj
  • wsyxhwj
  • 2016年05月24日 16:42
  • 435

2016"百度之星" - 初赛(Astar Round2B)瞬间移动

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5698 题意说我们可以从一个格子跳到右下角的任意一个格子中,那么反过来,跳到某一个格子的方法数显然就是...
  • RaAlGhul
  • RaAlGhul
  • 2016年05月23日 19:38
  • 526

hdu 5698瞬间移动(组合数取模、卢卡斯定理)

题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5698 数据范围: 2≤n,m≤100000,mod=1000000007。 思路: ...
  • aaaaacmer
  • aaaaacmer
  • 2016年05月23日 21:47
  • 547

android实现view滑动的7种方法

晚上十一点了,今天可能写不完了,持续更新中.... 这里讲的都是思路,以及目前经常使用的方法,代码在最后一次更新时上传, 实现滑动的7中方法 1:layout 方法 2:offsetLeftAndRi...
  • fkgjdkblxckvbxbgb
  • fkgjdkblxckvbxbgb
  • 2017年01月10日 23:14
  • 225

HTC Vive VRTK入门之瞬移自定义瞬时指针(桃花源游记)

夹岸数百步, 中无杂树, 芳草鲜美, 落英缤纷。 ---《桃花源记》 Bezier Pointer Custom Appearance Settings: Custom Tracer:构成曲线的...
  • nicolelili1
  • nicolelili1
  • 2017年07月09日 20:58
  • 763

51node-1627 瞬间移动

原题链接 1627 瞬间移动 基准时间限制:1 秒 空间限制:131072 KB 分值: 80 难度:5级算法题  收藏  关注 有一个无限大的矩形,初始时你在左上角(即...
  • qq_26122039
  • qq_26122039
  • 2016年08月22日 09:19
  • 114

51nod 瞬间移动 (组合数学)

1627 瞬间移动 基准时间限制:1 秒 空间限制:131072 KB 分值: 80 难度:5级算法题 收藏 关注 有一个无限大的矩形,初始时你在左上角(即第一行第一列),每次你都可以选择一个右下方...
  • Viscu
  • Viscu
  • 2017年05月02日 17:19
  • 419

51nod 1627 瞬间移动

ans=sum( C(n-2,i) * C(m-2,i) ) 然后求下逆元就好了。 #include using namespace std; const long long mod=1e9+7...
  • xin_jun
  • xin_jun
  • 2016年12月07日 21:38
  • 188

hdu5698 瞬间移动

hdoj5698 瞬间移动
  • DeathSaint
  • DeathSaint
  • 2017年10月23日 12:24
  • 124
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:HDU-5698-瞬间移动
举报原因:
原因补充:

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