时间限制:1 秒
内存限制:32 兆
特殊判题:否
提交:7284
解决:3139
-
题目描述:
-
用小于等于n元去买100只鸡,大鸡5元/只,小鸡3元/只,还有1/3元每只的一种小鸡,分别记为x只,y只,z只。编程求解x,y,z所有可能解。
-
输入:
-
测试数据有多组,输入n。
-
输出:
-
对于每组输入,请输出x,y,z所有可行解,按照x,y,z依次增大的顺序输出。
-
样例输入:
-
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
【分析】两个限制,必须要买100个鸡,多少都不行,总钱数要小于n。for循环跳出条件都是单种鸡总价超过n。要注意输出顺序——>来确定for循环的初值
Output Limit Exceed 错误 就是有无限循环,没有结束的语句。
#include <iostream>
#include <stdio.h>
using namespace std;
int main()
{
int n,x,y,z,maxZ;
while(scanf("%d",&n)!=EOF)
{
if(n>500) n=500;
if(3*n>100) maxZ=100;
else maxZ=3*n;
for(x=0;5*x<=n;x++)
{
int temp = maxZ;
for(y=0;3*y<=n;y++)
{
for(z=temp;z>=0;z--)
if(x+y+z==100&&(5*x+3*y+z*1.0/3)<=n)
printf("x=%d,y=%d,z=%d\n",x,y,z);
temp--;
}
}
}
return 0;
}