제출 #1252084

#제출 시각아이디문제언어결과실행 시간메모리
1252084LucaLucaMAsceticism (JOI18_asceticism)C++20
100 / 100
9 ms1096 KiB
#include <iostream> #include <vector> #include <algorithm> #include <cassert> using ll = long long; #define debug(x) #x << " = " << x << '\n' const int mod = 1e9 + 7; const int MAXN = 1e5; int fac[MAXN + 1]; int ifac[MAXN + 1]; int power(int a, int b) { int ret = 1; while (b) { if (b & 1) { ret = (ll) ret * a % mod; } a = (ll) a * a % mod; b >>= 1; } return ret; } int C(int n, int k) { return (ll) fac[n] * ifac[k] % mod * ifac[n - k] % mod; } int main() { std::ios_base::sync_with_stdio(false); std::cin.tie(0); int n, k; std::cin >> n >> k; fac[0] = 1; for (int i = 1; i <= n + 1; i++) { fac[i] = (ll) fac[i - 1] * i % mod; } ifac[n + 1] = power(fac[n + 1], mod - 2); for (int i = n; i >= 0; i--) { ifac[i] = (ll) ifac[i + 1] * (i + 1) % mod; } ll answer = 0; for (int i = 0; i <= k; i++) { if (i & 1) { answer -= (ll) C(n + 1, i) * power(k - i, n) % mod; } else { answer += (ll) C(n + 1, i) * power(k - i, n) % mod; } } answer += (ll) mod * mod; std::cout << answer % mod; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...