hdu 5894

来源:互联网 发布:莫比乌斯环戒指知乎 编辑:程序博客网 时间:2024/06/08 16:08
#include <bits/stdc++.h>const long long mod=1e9+7;const int N = 1000005 ;long long n , m , k ;long long pw[N];void init(){    pw[0]=1;    for (int i = 1 ; i < N ; i++)        pw[i]=pw[i-1]*i % mod;}long long qpow(long long a , long long k){    long long ans = 1 ;    while(k){        if(k % 2 == 1){            ans = ans*a %mod ;        }        a = a*a %mod ;        k/=2 ;    }    return ans ;}long long niyuan(long long k){    return qpow(k,mod-2);}int main(){    int T;    init();    scanf("%d",&T);    while (T--){        scanf("%lld %lld %lld",&n,&m,&k) ;        if(m == 1){            printf("%lld\n",n) ;            continue ;        }         if(n - m*k - m < 0){            printf("0\n") ;            continue ;        }        if (n-m*k-m==0)   {       printf("%lld\n",n/m);       continue ;   }    long long  ans=pw[n-m*k-1]*niyuan(pw[m-1]) % mod * niyuan(pw[n-m*k-m]) % mod * n % mod * niyuan(m) % mod;       printf("%lld\n",ans);    }    return 0;}
0 0
原创粉丝点击