题目描述:
用小于等于n元去买100只鸡,大鸡5元/只,小鸡3元/只,还有1/3元每只的一种小鸡,分别记为x只,y只,z只。编程求解x,y,z所有可能解。
输入:
测试数据有多组,输入n。
输出:
对于每组输入,请输出x,y,z所有可行解,按照x,y,z依次增大的顺序输出。
代码提供:http://blog.csdn.net/zinss26914/article/details/8000489
#include <stdio.h> #include <stdlib.h> int main() { int x,y,z,n; while(scanf("%d",&n) != EOF) { for(x = 0; x < (int)(n / 5); x++) { for(y = 0; y < (int)(n / 3); y++) { z = 100 - x - y; if( (z + 15 * x + 9 * y <= n * 3 ) && (z >= 0) ) { printf("x=%d,y=%d,z=%d\n",x,y,z); } } } } return 0; }
这里其实就是两个公式,我是一次就AC了,所以答不上神马注意事项,只是编写的时候有一点计算心得
(1)x,y的取值范围,假设x为大鸡,y为中鸡,很多人可能直接判断条件就是0 (2)因为我定义的x,y,z都为整形,所以判断条件时候需要等号两边都*3