開啟章節選單

11481 Arrange the Numbers

題目連結

題目翻譯

輸入

輸出

解題思路

程式碼

#include <bits/stdc++.h>
using namespace std;
#define int long long
#define idonthavegirlfriend ios::sync_with_stdio(0), cin.tie(0);
#define pb push_back
#define yn(a) (a ? "Yes\n" : "No\n")
// #include <atcoder/fenwicktree>
// #include <atcoder/dsu>
// using namespace atcoder
// author:Jackis666
int comb[1005][1005];
int dp[1005][1005];
signed main(){
    idonthavegirlfriend
    int MOD=1e9+7;

    comb[0][0]=1;
    for(int i=1;i<=1000;i++){
        comb[i][0]=comb[i][i]=1;
        for(int j=1;j<i;j++){
            comb[i][j]=(comb[i-1][j]+comb[i-1][j-1])%MOD;
        }

    }
    dp[0][0]=1;

    for(int i=1;i<=1000;i++){
        dp[i][0]=(dp[i-1][0]*(i))%MOD;
    }
    for(int i=1;i<=1000;i++){
        for(int j=1;j<=i;j++){
            dp[i][j]=(dp[i][j-1]-dp[i-1][j-1]+MOD)%MOD;

        }
    }
    int idx=0;
    int n,m,k;
    int t;
    cin>>t;
    while(t--){
        cin>>n>>m>>k;
        cout<<"Case "<<++idx<<": "<<(comb[m][k]*dp[n-k][m-k])%MOD<<"\n";
    }


}