/*很裸很裸的指数型母函数。。。(注意:指数形式的母函数由于除以了大数,所以精度序号控制,否则会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
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; }