HDU - 5698
Posted 西北会法语
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HDU - 5698相关的知识,希望对你有一定的参考价值。
1 #include<iostream> 2 #include<stdio.h> 3 #include<cstring> 4 5 using namespace std; 6 7 #define LL long long 8 const int p = 1000000007; 9 10 LL quick(LL a, LL b) 11 { 12 LL ans = 1; 13 a %= p; 14 while(b) 15 { 16 if(b & 1) 17 { 18 ans = ans * a % p; 19 b--; 20 } 21 b >>= 1; 22 a = a * a % p; 23 } 24 return ans; 25 } 26 27 LL C(LL n, LL m) 28 { 29 if(m > n) return 0; 30 LL ans = 1; 31 for(int i=1; i<=m; i++) 32 { 33 LL a = (n + i - m) % p; 34 LL b = i % p; 35 ans = ans * (a * quick(b, p-2) % p) % p; 36 } 37 return ans; 38 } 39 40 LL Lucas(LL n, LL m) 41 { 42 if(m == 0) return 1; 43 return C(n % p, m % p) * Lucas(n / p, m / p) % p; 44 } 45 46 int main() 47 { 48 LL n,m; 49 int i; 50 while(~scanf("%lld%lld",&n,&m)) 51 { 52 n-=2;m-=2; 53 if(n>m) 54 swap(n,m); 55 printf("%lld\n",Lucas(m+n,n)); 56 } 57 return 0; 58 }
有一个无限大的矩形,初始时你在左上角(即第一行第一列),每次你都可以选择一个右下方格子,并瞬移过去(如从下图中的红色格子能直接瞬移到蓝色格子),求到第nn 行第mm 列的格子有几种方案,答案对10000000071000000007 取模。
Input多组测试数据。
两个整数n,m(2≤n,m≤100000)n,m(2≤n,m≤100000)
Output一个整数表示答案Sample Input
4 5
Sample Output
10
以上是关于HDU - 5698的主要内容,如果未能解决你的问题,请参考以下文章