98112024-03-07 09:34:02Error42Faültetéscpp17Elfogadva 100/10057ms4424 KiB
#include <iostream>
#include <vector>

using namespace std;

using ll = long long;

ll const M = 1'000'000'007;

struct mod {
    ll val;

    // v >= 0
    mod(ll const& v) {
        if (v < M)
            val = v;
        else if (v < 2 * M)
            val = v - M;
        else
            val = v % M;
    }

    mod operator +(mod const& rhs) const {
        return val + rhs.val;
    }

    mod operator -(mod const& rhs) const {
        return val + M - rhs.val;
    }

    mod operator *(mod const& rhs) const {
        return val * rhs.val;
    }

    mod pow(ll const& p) const {
        if (p == 0)
            return 1;
        if (p % 2 == 1)
            return *this * pow(p - 1);

        mod const hp = pow(p / 2);
        return hp * hp;
    }

    mod inv() const {
        return pow(M - 2);
    }

    mod operator /(mod const& rhs) const {
        return *this * rhs.inv();
    }
};

mod fact(ll const n) {
    mod ans = 1;

    for (ll i = 2; i <= n; i++)
        ans = ans * i;

    return ans;
}

mod nck(ll const n, ll const k) {
    return fact(n) / fact(k) / fact(n - k);
}

int main() {
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);

    ll n;
    cin >> n;

    cout << ((nck(2 * n - 1, n - 1) - nck(2 * n - 1, n - 2)) / 2).val << "\n";
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
subtask10/0
1Elfogadva3ms2020 KiB
subtask210/10
2Elfogadva3ms2152 KiB
3Elfogadva3ms2388 KiB
4Elfogadva3ms2756 KiB
subtask340/40
5Elfogadva3ms2752 KiB
6Elfogadva3ms2916 KiB
7Elfogadva3ms2980 KiB
8Elfogadva3ms3212 KiB
9Elfogadva3ms3420 KiB
10Elfogadva3ms3544 KiB
11Elfogadva3ms3640 KiB
subtask450/50
12Elfogadva8ms3776 KiB
13Elfogadva30ms3880 KiB
14Elfogadva48ms3980 KiB
15Elfogadva16ms4096 KiB
16Elfogadva46ms4188 KiB
17Elfogadva26ms4272 KiB
18Elfogadva23ms4276 KiB
19Elfogadva52ms4188 KiB
20Elfogadva21ms4192 KiB
21Elfogadva57ms4424 KiB