Submission #1300800

#TimeUsernameProblemLanguageResultExecution timeMemory
1300800simona1230Asceticism (JOI18_asceticism)C++20
4 / 100
1 ms584 KiB
#include <bits/stdc++.h>

using namespace std;
const long long mod=1e9+7;

long long pw(long long x,long long p)
{
    if(p==0)return 1;
    if(p==1)return x;
    long long y=pw(x,p/2);
    y=y*y%mod;
    if(p%2==0)return y;
    return y*x%mod;
}

long long f[200001];

long long comb(long long k,long long n)
{
    return f[n]*pw(f[k]*f[n-k]%mod,mod-2)%mod;
}

long long n,k;
void solve()
{
    f[0]=1;
    for(long long i=1;i<=n+1;i++)
        f[i]=f[i-1]*i%mod;

    long long c=-1;
    long long ans=0;
    for(long long i=0;i<k;i++)
    {
        c*=-1;
        ans+=c*comb(i,n+1)*pw(k-i,n)%mod;
        ans%=mod;
        //cout<<c*comb(i,n+1)*pw(k-i,n)<<endl;;
    }

    cout<<ans<<endl;
}

int main()
{
	ios_base::sync_with_stdio(false);
	cin.tie(NULL);
	cout.tie(NULL);
	cin>>n>>k;
	solve();
	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...