제출 #933781

#제출 시각아이디문제언어결과실행 시간메모리
933781alexander707070Asceticism (JOI18_asceticism)C++14
100 / 100
31 ms2680 KiB
#include<bits/stdc++.h>
#define MAXN 3007
using namespace std;

const long long mod=1e9+7;

int n,k,nn,kk;
long long dp[MAXN][MAXN],ans;
bool li[MAXN][MAXN];

long long fact[MAXN],invfact[MAXN];

long long power(long long a,long long b){
    if(b==0)return 1;
    if(b==1)return a;
    if(b==2)return (a*a)%mod;
    if(b%2==0)return power(power(a,b/2),2);
    return (power(power(a,b/2),2)*a)%mod;
}

long long comb(long long k,long long n){
    return (((fact[n]*invfact[k])%mod)*invfact[n-k])%mod;
}

int main(){

    cin>>n>>k;

    fact[0]=invfact[0]=1;
    for(long long i=1;i<=n+1;i++){
        fact[i]=(fact[i-1]*i)%mod;
        invfact[i]=power(fact[i],mod-2);
    }

    for(int i=0;i<=k-1;i++){
        if(i%2==0) ans+=(comb(i,n+1)*power(k-i,n))%mod;
        else ans-=(comb(i,n+1)*power(k-i,n))%mod;

        ans=(ans+mod)%mod;
    }

    cout<<ans<<"\n";

    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...