제출 #1306950

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

using namespace std;
using ll = long long;

const int M = 1e9 + 7;

int fast(int x, int n) {
    if (not n) return 1;
    ll ret = fast(x, n >> 1);
    ret = (ret * ret) % M;
    if (n & 1) ret = (ret * x) % M;
    return ret;
}

int main() {
    int N, K;
    cin >> N >> K;
    int F[N + 2]{1};
    for (int i = 1; i <= N + 1; ++i) F[i] = (ll) F[i - 1] * i % M;
    ll ans = 0;
    for (int i = 0; i <= K; ++i) ans += (ll) fast(F[i], M - 2) * fast(F[N + 1 - i], M - 2) % M * (i & 1 ? -1 : 1) * fast(K - i, N) % M;
    cout << (ans % M + M) * F[N + 1] % M;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...