51nod 1119 机器人走方格 V2组合数
第1行,2个数M,N,中间用空格隔开。(2<=m,n<=1000000)
输出走法的数量Mod10^9+7。
23
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 }
优质内容筛选与推荐>>