hdu1085

/*
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int c1[8010], c2[8010];
int main() {
  int s[4], v[4] = {0, 1, 2, 5};
  while (scanf("%d%d%d", &s[1], &s[2], &s[3]) != EOF) {
      if (s[1] == 0 && s[2] == 0 && s[3] == 0) break;
      int sum = 0;
      sum+=s[1] + s[2]*v[2] + s[3]*v[3];
        memset(c1, 0, sizeof(c1));
        for (int i = 0; i <= s[1]; i++) {
            c1[i] = 1;
        }
        memset(c2, 0, sizeof(c2));
        for (int i = 2; i <= 3; i++) {
            for (int j = 0; j <= sum; j++) {
                for (int k = 0, count = 0; count<=s[i]&&k+j <= sum; k+=v[i], count++) {
                    c2[k+j] += c1[j];
                }
            }
            for (int j = 0; j<= sum; j++) {
                c1[j] = c2[j];
                c2[j] = 0;
            }
        }
    for(int j=0; j <= sum; j++){
            if(c1[j]==0){
                printf("%d\n",j);
                break;
            }
        }
    }
}*/
#include<iostream>
#include<cstring>
using namespace std;
const int MAX = 8000;
int arr[MAX+10], brr[MAX+10];
int main() {
  int s[4];
  int v[4]={0, 1, 2, 5};
  while (cin>>s[1]>>s[2]>>s[3]) {
    if (s[1]==0&&s[2]==0&&s[3]==0)
      return 0;
    int n = 0;
    for (int i = 1; i <= 3; i++)
      n+=s[i]*v[i];
    memset(arr,0,sizeof(arr));
    memset(brr,0,sizeof(brr));
    arr[0] = 1;
    for (int i = 1; i <= 3; i++) {
      for (int j = 0; j <= n; j++) {
        for (int k =0, count = 0; count <= s[i] && j+k <= n; k+=v[i],count++) {
          brr[j+k] += arr[j];
        }
      }
      for (int l =0; l <= n; l++) {
        arr[l] = brr[l];
        brr[l] = 0;
      }
    }
    int a;
    for (a = 1; a <= n; a++) {
      if (arr[a] == 0)
        break;
    }    
    cout<<a<<endl;
  }
  return 0;
} 

 

posted @ 2017-11-11 14:25  白丁一枚  阅读(257)  评论(0编辑  收藏  举报