/*
hdu 1521
指数型母函数
指数型母函数主要解决排列问题
问题解决与普通母函数差不多
只不过是每一项都要除以该项的阶乘
所求结果就是x^k/k!前面的系数
也就是c1[k]*k!
*/
#include<iostream>
#include<algorithm>
#include<string.h>
#include<string>
#include<stdio.h>
#include<math.h>
#define ll long long
#define INF 2147483647
#define N 50
#define PI acos(-1)
#define EPS 1e-8
using namespace std;
double jiecheng(int n)
{
double ans=1.0;
for(int i=1; i<=n; i++)
ans=ans*i;
return ans;
}
int main()
{
int n,m;
while(cin>>n>>m)
{
double c1[15],c2[15];
int num[15];
memset(c1,0.0,sizeof(c1));
memset(c2,0.0,sizeof(c2));
for(int i=1; i<=n; i++)
cin>>num[i];
for(int i=0; i<=num[1]; i++)
c1[i]=1.0/jiecheng(i);
for(int i=2; i<=n; i++)
{
for(int j=0; j<=m; j++)
for(int k=0; k<=num[i]&&j+k<=m; k++)
c2[j+k]+=c1[j]/jiecheng(k);
for(int j=0; j<=m; j++)
{
c1[j]=c2[j];
c2[j]=0;
}
}
printf("%.0lf\n",c1[m]*jiecheng(m));
}
return 0;
}
hdu 1521
指数型母函数
指数型母函数主要解决排列问题
问题解决与普通母函数差不多
只不过是每一项都要除以该项的阶乘
所求结果就是x^k/k!前面的系数
也就是c1[k]*k!
*/
#include<iostream>
#include<algorithm>
#include<string.h>
#include<string>
#include<stdio.h>
#include<math.h>
#define ll long long
#define INF 2147483647
#define N 50
#define PI acos(-1)
#define EPS 1e-8
using namespace std;
double jiecheng(int n)
{
double ans=1.0;
for(int i=1; i<=n; i++)
ans=ans*i;
return ans;
}
int main()
{
int n,m;
while(cin>>n>>m)
{
double c1[15],c2[15];
int num[15];
memset(c1,0.0,sizeof(c1));
memset(c2,0.0,sizeof(c2));
for(int i=1; i<=n; i++)
cin>>num[i];
for(int i=0; i<=num[1]; i++)
c1[i]=1.0/jiecheng(i);
for(int i=2; i<=n; i++)
{
for(int j=0; j<=m; j++)
for(int k=0; k<=num[i]&&j+k<=m; k++)
c2[j+k]+=c1[j]/jiecheng(k);
for(int j=0; j<=m; j++)
{
c1[j]=c2[j];
c2[j]=0;
}
}
printf("%.0lf\n",c1[m]*jiecheng(m));
}
return 0;
}