【生成函数】Step 2 HDU 1085

BabbleDay posted @ 2013年7月24日 01:01 in 刷题防身 , 644 阅读

Holding Bin-Laden Captive!

详解见:http://bonniebbs.is-programmer.com/posts/40073.html

#include <iostream>
#include <cstring>
#include <cstdio>
#define N 8005
#define swap for(int l=0; l<N; l++){c1[l]=c2[l]; c2[l]=0;}
using namespace std;

int main ()
{
    int a, b, c, n, ans;
    int c1[N], c2[N];
    while(scanf("%d %d %d", &a, &b, &c), a|b|c)
    {
        memset(c1, 0, sizeof(c1));
        memset(c2, 0, sizeof(c2));
        for(int i=0; i<=a; i++)
        {
            c1[i] = 1;
        }
        for(int i=0; i<=a; i++)
        {
            for(int j=0; j<=2*b; j+=2)
            {
                c2[i+j] += c1[i];
            }
        }
        swap
        for(int i=0; i<=a+2*b; i++)
        {
            for(int j=0; j<=5*c; j+=5)
            {
                c2[i+j] += c1[i];
            }
        }
        for(int i=0; i<=a+2*b+5*c+1; i++)
        {
            if(c2[i]==0){
            ans = i;
            break;
            }
        }
        cout << ans << endl;
    }
}

登录 *


loading captcha image...
(输入验证码)
or Ctrl+Enter