题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2069
说明:这个题目的意思是,告诉你有面值为50,25,10,5,1这几种硬币,现在给你一个数字n,问有多少种可能50*x + 25 * y + 10 * z + 5 * t + 1 * f == n, 因为N最大不会超过250,所以可以直接5重循环暴力求解。实际上4重循环也可以,因为知道前面4种硬币了,最后一种硬币也就是可以求的了。
代码:
if(n==0) { printf("1\n"); continue; } ans = 0; for(i=0; i<=n; i++) for(j=0; j*5<=n-i; j++) for(k=0; k*10<=n-i-j*5; k++) for(l=0; l*25<=n-i-j*5-k*10; l++) { m = n-i-j*5-k*10-l*25; if(i+j+k+l+m/50<=100 && m%50==0) ans ++; } printf("%d\n", ans); }