Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <cmath>
- #include <algorithm>
- #include <stdio.h>
- #include <vector>
- using namespace std;
- using solt = unsigned long long;
- solt mod = 1000000000 + 7;
- solt power(solt a, solt n){
- if (n == 1)
- return a % mod;
- if (n % 2 == 0){
- solt b = power(a, n / 2);
- return (b * b) % mod;
- }
- else{
- solt b = power(a, n - 1);
- return (a * b) % mod;
- }
- }
- solt cnk (solt n, solt k, vector<solt> &fac){
- if (k > n)
- return 0;
- if (k == n)
- return 1;
- solt under = (fac[n - k] * fac[k]) % mod;
- under = power(under, mod - 2) % mod;
- solt asw = (fac[n] * under) % mod;
- return asw;
- }
- int main(){
- solt n = 0, m = 0, l = 0;
- scanf("%llu %llu %llu", &n, &m, &l);
- vector <solt> fac (n + 1);
- fac[0] = 1;
- for (solt i = 1; i < n + 1; i++){
- fac[i] = (fac[i - 1] * i) % mod;
- }
- solt asw = 0;
- for(solt k = 1; k <= l; k++){
- if(n < m * k)
- continue;
- asw+=cnk(n, m * k, fac);
- asw %= mod;
- }
- printf("%llu\n", asw);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement