#include<iostream> using namespace std; int c1[8010],c2[8010]; int a[2][2]={2,5}; int main() { int num1,num2,num5,i,j,k,n; while(cin>>num1>>num2>>num5&&(num1||num2||num5)) { a[1][0]=num2;a[1][1]=num5; n=num1+2*num2+5*num5; for(i=0;i<=n;i++)//for(i=0;i<=8010;i++)也可以 c1[i]=0,c2[i]=0; for(i=0;i<=num1;i++) c1[i]=1; for(i=0;i<2;i++) { for(j=0;j<=n;j++) for(k=0;k+j<=n&&k<=a[1][i]*a[0][i];k+=a[0][i])//k+=a[1][i] c2[j+k]+=c1[j]; for(j=0;j<=n;j++) c1[j]=c2[j],c2[j]=0; } for(i=0;i<=n;i++) if(c1[i]==0) break; //n代表最高次幂 每一种情况 cout<<i<<endl; } system("pause"); return 0; } http://acm.hdu.edu.cn/showproblem.php?pid=1085