[恢]hdu 1085

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 ;
}



posted @ 2012-01-06 22:30  Seraph2012  阅读(171)  评论(0编辑  收藏  举报