详解见: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; } }