HDU 1521 排列组合 (指数型母函数)

来源:互联网 发布:安装快牙软件 编辑:程序博客网 时间:2024/04/29 16:45

/*很裸很裸的指数型母函数。。。(注意:指数形式的母函数由于除以了大数,所以精度序号控制,否则会WA  N多次)Ans= x ^ m的系数  *  (m !)

*/

 

 

Problem : 1521 ( 排列组合 )     Judge Status : Accepted
RunId : 7628739    Language : C++    Author : CherryChou
Code Render Status : Rendered By HDOJ C++ Code Render Version 0.01 Beta
#include<functional>#include<algorithm>#include<iostream>#include<fstream>#include<sstream>#include<iomanip>#include<numeric>#include<cstring>#include<cassert>#include<cstdio>#include<string>#include<vector>#include<bitset>#include<queue>#include<stack>#include<cmath>#include<ctime>#include<list>#include<set>#include<map>using namespace std;int i,j,k,n,m;double fac[11]={1,1,2,6,24,120,720,5040,40320,362880,3268800};double a[11],b[11],f[11];int main(){    while(~scanf("%d%d",&n,&m)){      for(i=0;i<n;i++)        scanf("%lf",&f[i]);      memset(a,0,sizeof(a));      memset(b,0,sizeof(b));      for(i=0;i<=f[0];i++)        a[i]=1.0/fac[i];      for(i=1;i<n;i++){        for(j=0;j<=m;j++)          for(k=0;k<=f[i]&&k+j<=m;k++)            b[k+j]+=(a[j]/fac[k]);        for(j=0;j<=m;j++)          a[j]=b[j],b[j]=0.0;      }      printf("%.0lf\n",a[m]*1.0*fac[m]);    }    return 0;}

 

原创粉丝点击