http://acm.hdu.edu.cn/showproblem.php?pid=2049
这道题还是错排 但是是n个里面m个的错排 所以要用Cmn处理
1 #include<stdio.h> 2 __int64 f(int n,int m) 3 { 4 int i; 5 __int64 s1=1,s2=1; 6 for(i=1;i<=m;i++) 7 { 8 s1*=(n-i+1); 9 s2*=i; 10 } 11 return s1/s2; 12 } 13 int main() 14 { 15 int k,n,m,i; 16 __int64 a[25]={0,0,1},num; 17 for(i=3;i<=20;i++) 18 a[i]=(i-1)*(a[i-1]+a[i-2]); 19 scanf("%d",&k); 20 while(k--) 21 { 22 scanf("%d%d",&n,&m); 23 num=a[m]*f(n,n-m); 24 printf("%I64d ",num); 25 } 26 return 0; 27 }