(hdu1085)Holding Bin-Laden Captive!(母函数,打表)

来源:互联网 发布:双色球合买软件 编辑:程序博客网 时间:2024/05/09 21:22

传送门:http://acm.hdu.edu.cn/showproblem.php?pid=1085
题意:分别给num1,num2,num3个1元,2元,5元硬币,求不能凑出来的最小值

分析:母函数
也是打表

#include <cstdio>#include <cmath>#include <cstring>#include <iostream>#include <string>#include <cctype>#include <vector>#include <queue>#include <algorithm>using namespace std;#define mem(a,n) memset(a,n,sizeof(a))#define pb push_back#define rep(i,a,n) for(int i=a; i<n; i++)typedef long long ll;typedef unsigned long long ull;const int mod=1e9+7;const double eps=1e-6;const int INF=0x3f3f3f3f;const int N=9e3+5;int ans[N],b[N];int main(){    int a,b,c;    while(~scanf("%d%d%d",&a,&b,&c))    {        if(!a && !b && !c) break;        mem(ans,0);        for(int i=0; i<=a; i++) ans[i]=1;        for(int i=0; i<=a; i++)            for(int j=0; j<=2*b; j+=2)                if(ans[i]) ans[i+j]=1;        for(int i=0; i<=a+2*b; i++)            for(int j=0; j<=5*c; j+=5)                if(ans[i]) ans[i+j]=1;        for(int i=0; i<=a+2*b+5*c+1; i++)            if(!ans[i])            {                printf("%d\n",i);                break;            }    }    return 0;}
原创粉丝点击