HDU 1085
来源:互联网 发布:java认证考试报名 编辑:程序博客网 时间:2024/06/09 16:24
#include <iostream>#include <cstdio>#include <cstring>using namespace std;int main(){ int a1[2005],a2[2005],c[3],d[4]= {1,2,5}; while(scanf("%d%d%d",&c[0],&c[1],&c[2]),c[0]+c[1]+c[2]) { int sum; int i,j,k; sum=1*c[0]+2*c[1]+5*c[2]; memset(a1,0,sizeof(a1)); memset(a2,0,sizeof(a2)); for(i=0; i<=c[0]; i++) { a1[i]=1; } for(i=1; i<3; i++) { for(j=0; j<=sum; j++) { if(a1[j]) { for(k=0; k+j<=sum&&k<=c[i]*d[i]; k+=d[i]) { a2[k+j]+=a1[j]; } } } for(j=0; j<=sum; j++) { a1[j]=a2[j]; a2[j]=0; } } for(i=1; i<=sum+1; i++)//这里要特别注意,i不能等于0,还有就是当1到sum都有的话,那么就要输出sum+1 { if(a1[i]==0) { printf("%d\n",i); break; } } } return 0;}