2011-12-31 19:13:38

地址:http://acm.hdu.edu.cn/showproblem.php?pid=2566

题意:中文。。。

mark:题目没给数据范围,实在蛋疼,水了一下。

考虑到如果有n个硬币,全都是1或2,能组成[n,2n]区间内任何一个数。

所以枚举面额为5的硬币个数,然后计算剩下的面额是否在剩下的1、2硬币组成的面额区间内。15ms。

那个dp[]数组没用,一开始看错题了。

代码:

# include <stdio.h>


int dp[] = {1, 1, 2, 3, 5, 9} ;


int main ()
{
int T, i, n, m, nn, mm, ans ;
scanf ("%d", &T) ;
while (T--)
{
scanf ("%d%d", &n, &m) ;
ans = 0 ;
for (i = 0 ; i <= n && 5*i <= m ; i++)
{
mm = m - 5*i ;
nn = n - i ;
if (mm >= nn && mm <= 2*nn) ans++ ;
}
printf ("%d\n", ans) ;
}
return 0 ;
}