给你三种硬币(一元,二元,五元)的个数 问你不能组成的数的最小值
直接套用母函数模板即可
不懂母函数的请先看看这篇文章
AC代码:
#include <iostream>
#include <cstring>
#include <cstdio>
using namespace std;
int a[10005],b[10005];
int f[4] = {0,1,2,5};
int main()
{
int num[4];
while(~scanf("%d%d%d",&num[1],&num[2],&num[3]))
{
int sum;
if(num[1]==0&&num[2]==0&&num[3]==0)
break;
sum =num[1] + num[2] * 2 + num[3] * 5;
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));
for(inti = 0; i <= num[1]; i++)
a[i]= 1;
for(int i = 2; i <= 3; i++)
{
for(int j = 0; j <= sum; j++)
for(int k = 0; k <= num[i]; k++)
{
b[j+k*f[i]] += a[j];
}
for(int j = 0; j <= sum; j++)
{
a[j] = b[j];
b[j] = 0;
}
}
for(inti = 0; i < sum+2; i++)
{
if(a[i]==0)
{
printf("%d\n",i);
break;
}
}
}
return 0;
}