题目来源:http://acm.hdu.edu.cn/showproblem.php?pid=1085
指数母函数变形。
#include<iostream>
using namespace std;
#define MAX 100000
int c1[MAX],c2[MAX];
int main()
{
int i,j,k;
int f[4];
int n[4];
int m[4];
f[1]=1;
f[2]=2;
f[3]=5;
while(cin>>n[1]>>n[2]>>n[3])
{
if(n[1]==0&&n[2]==0&&n[3]==0)
break;
m[1]=n[1]*1;
m[2]=n[1]*1+n[2]*2;
m[3]= n[1]*1+n[2]*2+n[3]*5;
memset(c1,0,sizeof(c1));
memset(c2,0,sizeof(c2));
for(j=0;j<=n[1];j++)
c1[j]=1;
for(i=2;i<=3;i++)
{
for(j=0;j<=m[i-1];j++)
for(k=0;k<=n[i]*f[i];k+=f[i])
{
c2[j+k]=c1[j];
}
for(j=0;j<=m[i];j++)
{
c1[j]=c2[j];
c2[j]=0;
}
}
for(i=0;i<=m[3];i++)
{
if(c1[i] == 0)
{
cout<<i<<endl;
break;
}
}
if(i == m[3]+1)
cout<<i<<endl;
}
return 0;
}