杭电2049

此题也是一道组合数递推问题,递推规律同2048,记住规律仍然是a[i]=(i-1)*(a[i-1]*a[i-2]);只是最后乘以组合数Cmn    

 

 

#include<iostream>
using namespace std;
int main()
{
 int n,c,b,i;__int64 a[25],d,e,r,f;
 cin>>n;
 getchar();
 while(n--)
 {
  d=1;
        e=1;
  cin>>c>>b;
       a[1]=0;
    a[2]=1;
    a[3]=2;
    for(i=4;i<=b;i++)
     a[i]=(i-1)*(a[i-2]+a[i-1]);
        f=r=b;
    for(i=c;r>0;r--,i--)
     d=d*i;
    for(i=f;f>0;f--,i--)
      e=e*i;
    printf("%I64d\n",d/e*a[b]);
    }
 return 0;
}

posted on 2012-09-25 20:38  @ 小浩  阅读(562)  评论(0编辑  收藏  举报