百度之星2016练习赛 瞬间移动

来源:互联网 发布:重庆单身狗小面 淘宝 编辑:程序博客网 时间:2024/06/03 15:58
瞬间移动
System Message (命题人)
基准时间限制:1 秒 空间限制:131072 KB 分值: 80

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


Input
单组测试数据。两个整数n,m(2<=n,m<=100000)
Output
一个整数表示答案。
Input示例
4 5
Output示例
10
<pre name="code" class="cpp">#include<cstdio>#include<cstring>const long long mod=1000000007;typedef long long ll;const int N=100002;ll inv[N];int main(){    int n,m;    inv[1]=1;    for(int i=2;i<N;i++)inv[i]=(mod-mod/i)*inv[mod%i]%mod;    while(~scanf("%d%d",&n,&m)){        if(n==1||m==1){            printf("0\n");continue;        }        n=n+m-4;        m=m-2;        ll ans=1;        for(int i=1;i<=m;i++){            ans=(ans*(ll)(n-i+1))%mod;            ans=(ans*inv[i])%mod;        }        printf("%lld\n",ans);    }    return 0;}



0 0