题目链接: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);
}