首页 > 代码库 > 繁华模拟赛 Vincent的城堡

繁华模拟赛 Vincent的城堡

技术分享

技术分享

#include<iostream>#include<cstdio>#include<string>#include<cstring>#include<algorithm>#define ll long longusing namespace std;const ll mod = 1000000007;ll n,k,c[20][20];ll ansa,ansb,ans;void get_c(){    for(int i = 1;i <= 10;i++){        c[i][0] = c[i][i] = 1;        c[i][1] = c[i][i-1] = i;    }    for(int i = 2;i <= 10;i++){        for(int j = 2;j < i;j++){            c[i][j] = c[i-1][j-1] + c[i-1][j];        }    }}ll q_mul(ll a,ll b){    ll ans = 0;    while(b){        if(b&1){            ans = (ans + a) % mod;        }        a = (a + a) % mod;        b >>= 1;    }    return ans;}ll q_pow(ll a,ll b){    ll ans = 1;    while(b){        if(b&1){            ans = q_mul(ans,a);        }        a = q_mul(a,a);        b >>= 1;    }    return ans;}int main(){    freopen("castle.in","r",stdin);    freopen("castle.out","w",stdout);    cin>>n>>k;    get_c();    ansb = q_pow(n-k,n-k);    ansa = q_pow(k,k-1);//诡异结论    ans = q_mul(ansa,ansb);    cout<<ans;    return 0;}

 

繁华模拟赛 Vincent的城堡