제출 #1370827

#제출 시각아이디문제언어결과실행 시간메모리
1370827chikien2009Asceticism (JOI18_asceticism)C++20
100 / 100
19 ms1992 KiB
#include <bits/stdc++.h>

using namespace std;

void setup()
{
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
}

const long long mod = 1e9 + 7;

int n, k;
long long res;
long long fac[100002], inv[100002];

inline long long Bpow(long long base, long long ind)
{
    long long ret = 1;
    do
    {
        (ret *= (ind & 1 ? base : 1LL)) %= mod;
        (base *= base) %= mod;
    } while (ind >>= 1);
    return ret;
}

inline long long C(int _n, int _k)
{
    return (((fac[_n] * inv[_k]) % mod) * inv[_n - _k]) % mod;
}

int main()
{
    setup();

    cin >> n >> k;
    k = n - k;
    fac[0] = inv[0] = 1;
    for (int i = 1; i <= n + 1; ++i)
    {
        fac[i] = (fac[i - 1] * i) % mod;
        inv[i] = Bpow(fac[i], mod - 2);
    }
    for (int i = 0; i <= k; ++i)
    {
        // Eulerian number explicit formula
        (res += ((Bpow(mod - 1, i) * C(n + 1, i)) % mod) * Bpow(k + 1 - i, n)) %= mod;
    }
    cout << res;
    return 0;
}
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…