제출 #1149898

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

using namespace std;

#define ll long long

const ll mod=1e9+7, nx=1e5+5;

ll n, k, res, f[nx];

ll binpow(ll a, ll b)
{
    if (b==0) return 1;
    ll tmp=binpow(a, b/2);
    if (b%2) return (((tmp*tmp)%mod)*a)%mod;
    else return (tmp*tmp)%mod;
}

int main()
{
    cin.tie(NULL)->sync_with_stdio(false);
    cin>>n>>k;
    f[0]=1;
    for (int i=1; i<=n+1; i++) f[i]=(f[i-1]*i)%mod;
    //cout<<"debug "<<(f[4]*binpow(f[4], mod-2))%mod<<'\n';
    k=n-k;
    for (int i=0; i<=k; i++)
    {
        ll tmp=(((((binpow(k+1-i, n)*f[n+1])%mod)*binpow(f[i], mod-2))%mod)*binpow(f[n+1-i], mod-2)%mod);
        if (i%2) tmp=((-tmp)+mod)%mod;
        res=(res+tmp)%mod;
    }
    cout<<res;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...