Submission #370950

#TimeUsernameProblemLanguageResultExecution timeMemory
370950blueAsceticism (JOI18_asceticism)C++17
49 / 100
3 ms1280 KiB
#include <iostream> #include <algorithm> #include <vector> using namespace std; long long mod = 1'000'000'007; long long fact[100001]; long long pow(long long b, long long e) { if(e == 0) return 1; if(e % 2) return (b * pow(b, e-1)) % mod; else { long long temp = pow(b, e/2); return (temp*temp) % mod; } } long long choose(long long n, long long k) { return (((fact[n] * pow(fact[k], mod-2)) % mod) * pow(fact[n-k], mod-2)) % mod; } int main() { fact[0] = 1; for(long long i = 1; i <= 100000; i++) fact[i] = (fact[i-1] * i) % mod; long long N, K; cin >> N >> K; long long ans = 0; for(long long i = 0; i <= K; i++) { // long long temp = (mod + (pow(-1, i) * ((choose(N-1, K) * pow(K-i, N)) % mod) ) ) % mod; long long temp = choose(N+1, i) * pow(K-i, N); temp = temp % mod; // cout << choose(N+1, K) << ' ' << pow(K-i, N) << '\n'; // cout << temp << '\n'; if(i % 2 == 0) ans = (ans + temp) % mod; else ans = (mod + ans - temp) % mod; } cout << ans << '\n'; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...