首页 > 代码库 > HDU 2049

HDU 2049

简单错排

#include <iostream>#include <cstdio>#include <algorithm>#define LL __int64using namespace std;LL Cnk[25][25];LL Dn[25];void initial(){	for(LL i=1;i<25;i++){		Cnk[i][0]=1;		for(LL j=1;j<=i;j++){			if(j==1)			Cnk[i][j]=i;			else			Cnk[i][j]=Cnk[i][j-1]*(i-j+1)/j;		}	}	Dn[0]=1;	Dn[1]=0;	Dn[2]=1;	for(LL i=3;i<25;i++)	Dn[i]=(i-1)*(Dn[i-2]+Dn[i-1]);}int main(){	initial();	int T,n,m;	scanf("%d",&T);	while(T--){		scanf("%d%d",&n,&m);		LL ans=Cnk[n][n-m]*Dn[m];		printf("%I64d\n",ans);	}	return 0;}

  

HDU 2049