额 母函数
#include <cstdio>
#include <cstring>
int a[3],b[3]= {1,2,5};
int c1[10001],c2[10001],sum;
int main()
{
while(scanf("%d%d%d",&a[0],&a[1],&a[2]) && a[0]+a[1]+a[2])
{
sum=a[0] + 2*a[1] + 5*a[2];
memset(c1, 0, sizeof(c1));
memset(c2, 0, sizeof(c2));
c1[0] = 1;
for(int i = 0; i < 3; i++)
{
for(int j = 0; j <= sum; j++)
if(c1[j])
for(int k = 0; j+k <= sum && k <= b[i]*a[i]; k += b[i])
c2[k+j] += c1[j];
for(int j = 0; j <= sum; j++)
{
c1[j] = c2[j];
c2[j] = 0;
}
}
int i;
for(i = 0; i <= sum; i++)
if(!c1[i])
break;
printf("%d\n",i);
}
return 0;
}
因为输出错 wa好几遍#include <cstdio>
#include <cstring>
int a[3],b[3] = {1, 2, 5};
int c[10001], sum;
int c2[10001];
int main()
{
while(scanf("%d%d%d",&a[0],&a[1],&a[2]) && a[0]+a[1]+a[2])
{
sum = a[0] + 2*a[1] + 5*a[2];
memset(c, 0, sizeof(c));
memset(c2, 0, sizeof(c2));
c[0] = 1;
int v = 0;
for(int i = 0; i < 3; i++)
{
for(int j = 0; j <= v; j++)
if(c[j])
for(int k = 1; k <= a[i]; k++)
c2[k*b[i]+j] = 1;
v += a[i]*b[i];
for(int j = 0; j <= v; j++)
{
if(!c[j])
c[j] = c2[j];
c2[j] = 0;
}
}
int i;
for(i = 0; i <= sum; i++)
if(!c[i])
break;
printf("%d\n",i);
}
return 0;
}