[HAOI2018]苹果树 组合数学

[HAOI2018]

  • 基础组合数学

Code


#include<bits/stdc++.h>
#define rep(i,a,b) for(ll i=(a);i<=(b);i++)
#define ll long long
using namespace std;
const ll N=4e3;
ll fact[N],dp[N][N],c[N][N],n,mod,ans=0;
int main()
{
	scanf("%lld%lld",&n,&mod);
	fact[0]=1;rep(i,1,n)fact[i]=fact[i-1]*i%mod;
	c[0][0]=1;
	rep(i,1,n){c[i][0]=1;rep(j,1,i)c[i][j]=(c[i-1][j-1]+c[i-1][j])%mod;}
	rep(i,2,n){
		rep(j,1,n-i+1){
			ans=(ans+fact[j]*c[n-i][j-1]%mod*j%mod*(n-j)%mod*fact[n-j-1]%mod*i%mod*(i-1)%mod)%mod;
		}
	}
	cout<<ans;
	return 0;
}

猜你喜欢

转载自blog.csdn.net/strangeDDDF/article/details/87593466