Submission #1284055

#TimeUsernameProblemLanguageResultExecution timeMemory
1284055IcelastAsceticism (JOI18_asceticism)C++20
4 / 100
5 ms3400 KiB
#include <iostream> #include <bits/stdc++.h> #define ll long long using namespace std; const ll maxn = 2*1e5+5, INF = 4e18+9, mod = 1e9+7; vector<ll> fact, invfact; ll binpow(ll a, ll b){ ll res = 1; while(b > 0){ if(b&1){ res*=a; res%=mod; } a*=a; a%=mod; b/=2; } return res; } ll modinv(ll x){ return binpow(x, mod-2); } void calcfact(int n){ fact.resize(n+1, 0); invfact.resize(n+1, 0); fact[0] = 1; for(int i = 1; i <= n; i++){ fact[i] = fact[i-1]*i; fact[i]%=mod; } invfact[n] = modinv(fact[n]); for(int i = n-1; i >= 0; i--){ invfact[i] = invfact[i+1]*(i+1)%mod; } } ll nCk(ll n, ll k){ if(k < 0 || k > n) return 0; return fact[n]*(invfact[k]*invfact[n-k]%mod)%mod; } ll distributing_apples(ll n, ll m){ // number of people, apple return nCk(m+n-1, n-1); } void solve(){ calcfact(2e5); int n, k; cin >> n >> k; k--; ll ans = 0; for(int i = 0; i <= k; i++){ ans += binpow(-1, i) * nCk(n+1, i) % mod * binpow(k+1-i, n) % mod; } ans %= mod; cout << ans; } int main(){ ios_base::sync_with_stdio(false); cin.tie(NULL); solve(); }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...