Submission #530885

#TimeUsernameProblemLanguageResultExecution timeMemory
530885cpp219Asceticism (JOI18_asceticism)C++17
100 / 100
23 ms1104 KiB
#include<bits/stdc++.h> #define ll long long #define ld long double #define fs first #define sc second #define debug(y) cout<<y,exit(0) using namespace std; typedef pair<ll,ll> LL; const ll N = 1e5 + 9; const ll mod = 1e9 + 7; const ll base = 31; ll n,k,fac[N],ans,sum; ll bpow(ll a,ll b){ ll res = 1; while(b){ if (b & 1) res = (res*a)%mod; a = (a*a)%mod; b >>= 1; } return res; } ll C(ll k,ll n){ ll ts = fac[n],ms = fac[k] * fac[n - k]; ms %= mod; return (ts * bpow(ms,mod - 2))%mod; } int main(){ ios_base::sync_with_stdio(NULL); cin.tie(0); cout.tie(0); #define task "tst" if (fopen(task".inp","r")){ freopen(task".inp","r",stdin); //freopen(task".out","w",stdout); } cin>>n>>k; fac[0] = 1; for (ll i = 1;i < N;i++) fac[i] = (fac[i - 1] * i)%mod; //debug(C(2,4)); for (ll i = 0;i <= k;i++){ sum = (bpow(k - i,n) * C(i, n+1)) % mod; //debug(C(i,n + 1)); if(i&1) ans = (ans - sum + mod) % mod; else ans = (ans + sum) % mod; } debug(ans); } /* stuff you should look for * int overflow, array bounds * special cases (n=1?) * do smth instead of nothing and stay organized * WRITE STUFF DOWN * DON'T GET STUCK ON ONE APPROACH */

Compilation message (stderr)

asceticism.cpp: In function 'int main()':
asceticism.cpp:33:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   33 |         freopen(task".inp","r",stdin);
      |         ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...