1 1 3 0 0 0
4
We have carefully selected several similar problems for you: 2082 2079 2110 1059 2566
个人理解题意:
给你1 2 5硬币的数量让你让你求不能支付的最小值
#include <iostream>
using namespace std;
#include<stdlib.h>
#include<stdio.h>
#include <cstring>
#include<string>
#include<cmath>
#include<algorithm>
int c1[10000],c2[10000];
int main()
{
int a,b,c;
while(~scanf("%d%d%d",&a,&b,&c))
{
if(a==0&&b==0&&c==0)
return 0;
int i,sum,j,k;
sum=a+b*2+c*5;//求出总质量
memset(c1,0,sizeof(c1));
for(i=0;i<=a;i++)
c1[i]=1;
memset(c2,0,sizeof(c2));
for(j=0;j<=a;j++)
{
for(k=0;k<=b*2;k+=2)
c2[j+k]=1;
}
for(j=0;j<=sum;j++)
{
c1[j]=c2[j];
c2[j]=0;
}//算出依2为钱币兑换。
for(j=0;j<=sum;j++)
{
if(c1[j]==1)
{
for(k=0;k<=c*5;k+=5)
c2[j+k]=1;
}
}
for(j=0;j<=sum;j++)
{
c1[j]=c2[j];
c2[j]=0;
}//依5为兑换钱币
for(i=1;;i++)
if(c1[i]==0)//找出最小的
{
printf("%d\n",i);
break;
}
}
return 0;
}