hdu 1521 指数型母函数

来源:互联网 发布:linux操作系统移植 编辑:程序博客网 时间:2024/06/10 22:42
#include<iostream>#include<cstring>#include<cstdlib>#include<algorithm>using namespace std;double dp1[15],dp2[15],a[15];int v[15],num[15],n,m;void solve(){    for(int i=2;i<=n;i++)//从第二项开始     {        for(int j=0;j<=m;j++)        {            for(int k=0;k<=num[i]&&k*v[i]+j<=m;k++)            {                dp2[j+k*v[i]]+=dp1[j]/a[k*v[i]];            }        }        for(int j=0;j<=m;j++)        {            dp1[j]=dp2[j];            dp2[j]=0;        }    }}int main(){a[0]=1;a[1]=1;for(int i=2;i<=15;i++){a[i]=i*a[i-1];}//预处理阶乘     while(cin>>n>>m)    {        for(int i=1;i<=n;i++)        {            v[i]=1;            cin>>num[i];        }        memset(dp1,0,sizeof(dp1));    memset(dp2,0,sizeof(dp2));    //dp1[0]=1.0;     for(int i=0;i<=num[1];i++)//初始化第一项     {    dp1[i]=1.0/a[i];}        solve();        double ans;        ans=dp1[m]*a[m];        printf("%.0lf\n",ans);    }}