在本博AC代码中,求CNM用的是Anm/amm没用阶乘的形式,两者皆可
#include <stdio.h> int main(void) { long long a,b,larr[21]; int x,y,i,c,n,m; larr[1]=0;larr[2]=1;larr[3]=2; for(i=4; i<=20; i++) larr[i]=(larr[i-1]+larr[i-2])*(i-1); scanf("%d",&c); while(c--) { scanf("%d%d",&n,&m); a=b=1;x=n;y=m; for(i=m; i>=1; i--) { a*=x--; b*=y--; } printf("%lld ",a/b*larr[m]); } return 0; }
错排知识参考:http://www.cnblogs.com/bo-tao/archive/2011/08/02/2124622.html