2011-12-20 02:42:35
地址:http://acm.hdu.edu.cn/showproblem.php?pid=1085
题意:面额为1、2、5的硬币各有a、b、c枚。问最小的不能由它们组成的面额。
mark:不要想复杂了。对于一个给定的面额n,可以用O(1)的贪心办法判断它是否能由题目所给条件的硬币组成。然后从头搜到尾。
代码:
# include <stdio.h>
int a, b, c ;
int min(int a, int b){return a<b?a:b;}
int test(int n)
{
n -= 5*min(n/5, c) ;
n -= 2*min(n/2, b) ;
return n <= a ;
}
int main ()
{
int i ;
while (~scanf ("%d%d%d" ,&a, &b, &c) && (a||b||c))
{
for (i = 1 ; i <= (a+2*b+5*c)+10 ; i++)
if (!test(i)) break ;
printf ("%d\n", i) ;
}
return 0 ;
}