fork(1) download
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. const long long Mod = 1000000007;
  6.  
  7. long long mod(long long a, long long mod){
  8. return a%mod;
  9. }
  10.  
  11. long long sum(long long a, long long b){
  12. return (a + b)% Mod;
  13. }
  14.  
  15. long long mul(long long a, long long b){
  16. return (a * b)% Mod;
  17. }
  18.  
  19. long long fastpow(long long a, long long n){
  20. if (n == 0){
  21. return 1;
  22. }
  23. if (n % 2 == 0){
  24. int g = fastpow(a, n / 2);
  25. return mul (g, g);
  26. }
  27. else{
  28. return mul(a, fastpow(a, n - 1));
  29. }
  30. }
  31.  
  32. long long revers(long long a){
  33. return fastpow(a, Mod - 2);
  34. }
  35.  
  36. long long dv(long long a, long long b){
  37. return mul(a, revers(b));
  38. }
  39.  
  40. int main(){
  41. long long n, l, m;
  42. cin >> n >> m >> l;
  43. long long fact[n + 1];
  44. fact[0] = 1;
  45. for (int i = 1; i < n + 1; i++)
  46. fact[i] = mul(fact[i - 1], i);
  47. long long s = 0;
  48.  
  49. for (int i = 1; i <= l; i++){
  50. if (i * m <= n)
  51. s = sum(s, mod(dv(fact[n], mul(fact[n - i * m], fact[i * m])), Mod));
  52. }
  53. cout << s% Mod;
  54. }
  55.  
Success #stdin #stdout 0s 3460KB
stdin
3 1 3
stdout
7