zoukankan      html  css  js  c++  java
  • [ An Ac a Day ^_^ ] hdu 5894 hannnnah_j’s Biological Test lucas模板

    挂零的网络赛 今天才发现是公式推错了 当时还以为是算法不够优化……

     1 #include<cstdio>
     2 #include<iostream>
     3 #include<algorithm>
     4 #include<cmath>
     5 #include<cstring>
     6 #include<string>
     7 #include<ctime>
     8 #include<map>
     9 #include<set>
    10 #include<vector>
    11 #include<queue>
    12 #include<cstdlib>
    13 #include<cassert>
    14 #include<sstream>
    15 #include<stack>
    16 #include<list>
    17 #include<bitset>
    18 #define cl(a,b) memset(a,b,sizeof(a))
    19 #define debug(x) cerr<<#x<<"=="<<(x)<<endl
    20 using namespace std;
    21 typedef long long ll;
    22 typedef long double ldb;
    23 typedef pair<int,int> pii;
    24 
    25 const int inf=0x3f3f3f3f;
    26 const int maxn=1<<21;
    27 const int p=1e9+7;
    28 const double eps=1e-8;
    29 const double pi=acos(-1);
    30 
    31 int dx[8]= {0,0,1,-1,1,-1,1,-1};
    32 int dy[8]= {1,-1,0,0,-1,1,1,-1};
    33 
    34 ll n,m,k;//p是模
    35 
    36 ll quick_mod(ll a, ll b)
    37 {
    38     ll ans = 1;
    39     a %= p;
    40     while(b)
    41     {
    42         if(b & 1)
    43         {
    44             ans = ans * a % p;
    45             b--;
    46         }
    47         b >>= 1;
    48         a = a * a % p;
    49     }
    50     return ans;
    51 }
    52 
    53 ll C(ll n, ll m)
    54 {
    55     if(m > n) return 0;
    56     ll ans = 1;
    57     for(int i=1; i<=m; i++)
    58     {
    59         ll a = (n + i - m) % p;
    60         ll b = i % p;
    61         ans = ans * (a * quick_mod(b, p-2) % p) % p;
    62     }
    63     return ans;
    64 }
    65 
    66 ll Lucas(ll n, ll m)
    67 {
    68     if(m == 0) return 1;
    69     return C(n % p, m % p) * Lucas(n / p, m / p) % p;
    70 }
    71 
    72 int main()
    73 {
    74     int T;
    75     scanf("%d", &T);
    76     while(T--)
    77     {
    78         scanf("%lld%lld%lld", &n, &m, &k);
    79         ll res = Lucas(n - m * k - 1, m - 1);
    80         (res *= n) %= p;
    81         res *= quick_mod(m, p - 2);
    82         res %= p;
    83         printf("%lld
    ", res);
    84     }
    85     return 0;
    86 }
  • 相关阅读:
    小学生二元四则运算(F)
    补进度条
    附加作业
    个人总结
    第四 五周结对作业(照片)
    第四,五周——Java编写的电梯模拟系统(结对作业)
    第三周(JAVA编写的 wordcount)
    第三周续(读代码)
    第三周
    第二周续.(代码)
  • 原文地址:https://www.cnblogs.com/general10/p/6403022.html
Copyright © 2011-2022 走看看