- 题目描述:
-
用小于等于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
解题思路:
先将题意转化为一个数学问题,然后列出相应的方程,化简方程,然后通过对剩下的变量进行穷举,输出符合条件的结果。
代码:1 #include<iostream> 2 #include<cstdio> 3 using namespace std; 4 int main() 5 { 6 int n; 7 while(cin >> n) 8 { 9 for(int i = 0; i <= 100; i++) 10 for(int j = 0; j <= 100; j++) 11 { 12 if((14 * i + 8 * j) <= n * 3 - 100) 13 printf("x=%d,y=%d,z=%d\n",i,j,100-i-j); 14 else 15 break; 16 } 17 } 18 return 0; 19 }
收获:
1. C++的cout输出比C中的printf慢!!!在这个题目中分别为10ms和50ms...
2. 优先将题目转化为数学问题进行化简解决,然后在通过程序实现,不要一上来就闷头写代码。
3. 方程中的未知数可以在程序中拿穷举来解决