题目描述
用小于等于n元去买100只鸡,大鸡5元/只,小鸡3元/只,还有1/3元每只的一种小鸡,分别记为x只,y只,z只。编程求解x,y,z所有可能解。
输入描述:
测试数据有多组,输入n。
输出描述:
对于每组输入,请输出x,y,z所有可行解,按照x,y,z依次增大的顺序输出。
示例1
输入:
40
输出:
x=0,y=0,z=100
x=0,y=1,z=99
x=0,y=2,z=98
x=1,y=0,z=99
#include <stdio.h>
int main() {
int money;
int x, y, z;
scanf("%d", &money);
if (money < 34) {
printf("x=%d,y=%d,z=%d\n", 0, 0, 0);
}
for (x = 0; x < 101; x ++) {
for (y = 0; y < 101 - x; y ++) {
//
if (x * 15 + y * 9 + (100 - x - y) <= money * 3) {
printf("x=%d,y=%d,z=%d\n", x, y, 100 - x - y);
}
}
}
return 0;
}
问题关键在于处理除以三之后是否是小数,如果不能整除则计算总花费时候需要小于总金额,如果可以整除则总花费小于等于总开销,有两种办法
1、判断是否整除然后比较花费和金额
2、将所有数字乘以三直接按可以整除计算
这里选取第二种计算办法