Holding Bin-Laden Captive!(母函数)

来源:互联网 发布:mac终端建立文件夹 编辑:程序博客网 时间:2024/05/16 18:44

题目大意是给出面值分别为1 2 5的硬币的数量,求用这些硬币不能搭配出来的总面值的方法数。

母函数模板请看我的另一篇文章http://blog.csdn.net/rcy_zhu/article/details/75041050

#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<string>using namespace std;#define ll long long#define inf 0xfffffff#define N 9002int a[N],b[N];int v[4]= {0,1,2,5};int n2[5];int main(){    while(cin>>n2[1]>>n2[2]>>n2[3],n2[1],n2[2],n2[3])    {        memset(a,0,sizeof(a));        a[0]=1;        int n=0;        for(int i=1; i<=3; i++)        {            n+=v[i]*n2[i];            memset(b,0,sizeof(b));            for(int j=0; j<=n2[i]&&j*v[i]<=n; j++)            {                for(int k=0; k+j*v[i]<=n; k++)                    b[k+j*v[i]]+=a[k];            }            memcpy(a,b,sizeof(b));        }        int ans=0;        for(ans=0; ans<=n; ans++)            if(a[ans]==0)                break;        printf("%d\n",ans);        memset(n2,0,sizeof(n2));    }}