4604 2023. 03. 30 11:14:22 Error42 Játék (50 pont) cpp17 Elfogadva 50/50 39ms 4160 KiB
#include <iostream>

using namespace std;

using ll = long long;

template <ll M>
struct modular {
    ll val;

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

    [[nodiscard]] modular operator +(const modular& rhs) const {
        return val + rhs.val;
    }

    [[nodiscard]] modular operator -(const modular& rhs) const {
        return val + M - rhs.val;
    }

    [[nodiscard]] modular operator *(const modular& rhs) const {
        return val * rhs.val;
    }

    // p >= 0
    [[nodiscard]] modular pow(const ll& p) const {
        if (p == 0)
            return 1;

        if (p % 2 == 0)
            return (*this * *this).pow(p / 2);
        else
            return *this * pow(p - 1);
    }

    [[nodiscard]] modular inv() const {
        return pow(M - 2);
    }

    [[nodiscard]] modular operator /(const modular& rhs) const {
        return *this * rhs.inv();
    }

    modular& operator +=(const modular& rhs) {
        return *this = *this + rhs;
    }

    modular& operator -=(const modular& rhs) {
        return *this = *this - rhs;
    }

    modular& operator *=(const modular& rhs) {
        return *this = *this * rhs;
    }

    modular& operator /=(const modular& rhs) {
        return *this = *this / rhs;
    }

    explicit operator ll() const {
        return val;
    }
};

template <ll M>
ostream& operator<<(ostream& os, const modular<M>& modular) {
    cout << modular.val;
    return os;
}

using mod = modular<1'000'000'007>;

mod nck(ll const& n, ll const& k) {
    mod ans = 1;

    for (ll i = n - k + 1; i <= n; i++)
        ans *= i;

    for (ll i = 2; i <= k; i++)
        ans /= i;

    return ans;
}

int main() {
    ll b, c;
    cin >> b >> c;

    cout << nck(2 * c - b - 1, c - b) - nck(2 * c - b - 1, c - b - 1) << "\n";
}
Részfeladat Összpont Teszt Verdikt Idő Memória
base 50/50
1 Elfogadva 0/0 3ms 1876 KiB
2 Elfogadva 0/0 2ms 2120 KiB
3 Elfogadva 2/2 3ms 2328 KiB
4 Elfogadva 3/3 2ms 2416 KiB
5 Elfogadva 3/3 3ms 2548 KiB
6 Elfogadva 3/3 3ms 2752 KiB
7 Elfogadva 3/3 3ms 2840 KiB
8 Elfogadva 3/3 3ms 2964 KiB
9 Elfogadva 3/3 3ms 3024 KiB
10 Elfogadva 3/3 3ms 3248 KiB
11 Elfogadva 3/3 3ms 3468 KiB
12 Elfogadva 3/3 3ms 3564 KiB
13 Elfogadva 3/3 3ms 3692 KiB
14 Elfogadva 3/3 39ms 3732 KiB
15 Elfogadva 3/3 14ms 3736 KiB
16 Elfogadva 3/3 16ms 3864 KiB
17 Elfogadva 3/3 26ms 4108 KiB
18 Elfogadva 3/3 13ms 4156 KiB
19 Elfogadva 3/3 21ms 4160 KiB