Ck n-1 (k-1) (n-k-1)
先分成(0,1),(2,3)两组
第一个数必为2,后面n-1位选k个用来放(0,1),剩下n-k-1个放2,3
k取值2到n-2
C++ 代码
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
typedef long long ll;
const int N = 1010, MOD = 1e9 + 7;
int C[N][N];
int main()
{
int n;
cin >> n;
for(int i = 0;i <= n;i++)
{
for(int j = 0;j <= i;j++)
{
if(!j){
C[i][j] = 1;
}
else {
C[i][j] = (C[i-1][j] + C[i-1][j-1]) % MOD;
//Cnm=Cn−1m+Cn−1m−1运用了组合数公式,%MOD为了避免超
}
}
}
int res = 0;
for(int k = 2;k <= n-2;k++)
{
res =(res + (ll)C[n-1][k] * (k-1) % MOD * (n-k-1)) % MOD;
// res = res % MOD;
}
cout << res <<endl;
return 0;
}