#include<stdio.h> long long nj(int); int main() { int num=0; int N,M; long long dp[100]; dp[2]=1; dp[3]=2; scanf("%d",&num); while(num--) { scanf("%d%d",&N,&M); long long Cnm=nj(N)/(nj(M)*nj(N-M)); //求C(N,M); for(int i=4;i<=M;i++) dp[i]=( dp[i-1]*(i-1)+dp[i-2]*(i-1) ); printf("%lld\n",dp[M]*Cnm); } } long long nj(int x) //求x的阶乘 { long long xj=1; for(int i=1;i<=x;i++) xj*=i; return xj; }
原文:https://www.cnblogs.com/wzmm/p/12668571.html