http://acm.hdu.edu.cn/status.php?user=l1285556798&pid=1085&status=5
#include<stdio.h> #include<string.h> #define maxn 10000 int a[maxn],b[maxn]; int main() { int arr[5],brr[5]; int x,y,z; while(scanf("%d%d%d",&x,&y,&z)&&x+y+z) { if(x==0) { printf("1 "); continue; } brr[1]=1,brr[2]=2,brr[3]=5; arr[1]=x,arr[2]=y,arr[3]=z; int t=x+y*2+5*z; memset(a,0,sizeof(a)); memset(b,0,sizeof(b)); a[0]=1; int i,j,k; for(i=1;i<=3;i++) { for(j=0;j<=t;j++) for(k=0;k<=arr[i];k++) b[k*brr[i]+j]+=a[j]; for(j=0;j<=t;j++) { a[j]=b[j]; b[j]=0; } } for(i=1;i<=t;i++) { if(a[i]==0) { printf("%d ",i); break; } } if(i>=t) printf("%d ",t+1); } return 0; }