输入1分,2分,5分的硬币,输出不能组成的最小总值;
#include"iostream"
using namespace std;
int c1[10000],c2[10000];
int num[4];
int main()
{
int nNum;
while(scanf("%d %d %d",&num[1],&num[2],&num[3])&&(num[1]||num[2]||num[3]))
{
int _max=num[1]*1+num[2]*2+num[3]*5;
for(int i=0;i<=_max;++i)
{
c1[i]=0;
c2[i]=0;
}
for(int i=0;i<=num[1];++i)
c1[i]=1;
for(int i=0;i<=num[1];++i)
for(int j=0;j<=num[2]*2;j+=2)
c2[j+i]+=c1[i];
for(int i=0;i<=num[2]*2+num[1]*1;++i)
{
c1[i]=c2[i];
c2[i]=0;
}
for(int i=0;i<=num[1]*1+num[2]*2;++i)
for(int j=0;j<=num[3]*5;j+=5)
c2[j+i]+=c1[i];
for(int i=0;i<=num[2]*2+num[1]*1+num[3]*5;++i)
{
c1[i]=c2[i];
c2[i]=0;
}
int i;
for(i=0;i<=_max;++i)
if(c1[i]==0)
{
printf("%d\n",i);
break;
}
if(i==_max+1)
printf("%d\n",i);
}
return 0;
}