HDU 5894 hannnnah_j’s Biological Test ——(组合数)

Posted Storm_Spirit

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HDU 5894 hannnnah_j’s Biological Test ——(组合数)相关的知识,希望对你有一定的参考价值。

  思路来自于:http://blog.csdn.net/lzedo/article/details/52585170

  不过并不需要卢卡斯定理,直接组合数就可以了。

  代码如下:

 1 #include <stdio.h>
 2 #include <algorithm>
 3 #include <string.h>
 4 using namespace std;
 5 typedef long long ll;
 6 const int mod = (int)1e9 + 7;
 7 const int N = 1000000 + 5;
 8 
 9 int m,n,k;
10 int fac[N];
11 int qpow(int a,int b)
12 {
13     int ans = 1;
14     while(b)
15     {
16         if(b&1) ans = 1LL* ans * a % mod;
17         b >>= 1;
18         a = 1LL* a * a % mod;
19     }
20     return ans;
21 }
22 
23 int C(int n,int m)
24 {
25     if(n<m) return 0;
26     return 1LL* fac[n] * qpow(1LL*fac[m]*fac[n-m]%mod,mod-2) % mod;
27 }
28 
29 void init()
30 {
31     fac[1] = 1;
32     for(int i=2;i<N;i++)
33     {
34         fac[i] = 1LL* fac[i-1] * i % mod;
35     }
36 }
37 
38 int main()
39 {
40     init();
41     int T;scanf("%d",&T);
42     while(T--)
43     {
44         scanf("%d%d%d",&n,&m,&k);
45         if(m==1) printf("%d\n",n);
46         else
47         {
48             printf("%d\n",(int)(1LL*C(n-m*k-1,m-1)*n%mod*qpow(m,mod-2)%mod));
49         }
50     }
51 }

 

以上是关于HDU 5894 hannnnah_j’s Biological Test ——(组合数)的主要内容,如果未能解决你的问题,请参考以下文章

HDU5894 hannnnah_j’s Biological Test 组合数取模

HDU 5894 hannnnah_j’s Biological Test

HDU 5894 hannnnah_j’s Biologica(lucas定理求组合数+乘法逆元)——2016 ACM/ICPC Asia Regional Shenyang Online

HDU 5894 hannnnah_j’s Biological Test (组合数学)

HDU 5894 hannnnah_j’s Biological Test (组合数学) -2016 ICPC沈阳赛区网络赛

hdu 5894(组合数取模)