簽到題(組合數學)

簽到題(組合數學)

傳送門

看錯題意,以爲是nn位數。應該是長度爲nn的數組.恰好n1n-1個不同的數的方案數.

所以肯定有兩個數相同。

首先選出這兩個數的位置Cn2C_n^2,再選出這個數是幾Cn1=nC_n^1=n

再對剩下n1n-1個數中選出n2n-2個數Cn1n2=n1C_{n-1}^{n-2}=n-1

再進行全排列(n2)!(n-2)!

綜上ans=Cn2×n!ans=C_n^2\times n!

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=1e5+5,M=1e6+5,inf=0x3f3f3f3f,mod=1e9+7;
#define mst(a) memset(a,0,sizeof a)
#define lx x<<1
#define rx x<<1|1
#define reg register
#define PII pair<int,int>
#define fi first
#define se second
ll fac[N];
int main(){
    ll n;
    fac[0]=1;
    for(int i=1;i<=1e5;i++) fac[i]=fac[i-1]*i%mod;
    while(cin>>n){
       cout<<n*(n-1)/2*fac[n]%mod<<endl;
    }
    return 0;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章