解题思路:
本题解采用暴力解法,就是使用多层for循环来求公、母、雏鸡的个数。
原来的思路:使用3层for循环,来枚举这三种鸡的数目,然后通过三者之和是否为100,三者的钱数之和是否为100以及雏鸡是否为3的倍数来输出公、母、雏鸡的头数。
借鉴了某个题解的思路:使用2层for循环,这样可以得到很多种公鸡和母鸡的个数,在利用总和为100,得到很多种雏鸡的个数,再判断钱数是否为100;雏鸡是否为3的倍数;
注意事项:
一定要对每种鸡的最大数有一个大概,这样才能避免无效循环,还有就是一定要记住雏鸡必须为3的倍数
参考代码:
原来的思路
#include <stdio.h> int main() { int i,j,k; for(i = 0;i < 20;i++)//公鸡为5块钱一只,不能超过20只 { for(j = 0;j < 34;j++)//母鸡为3块钱一只,不能超过34头 { for(k = 0;k < 100;k++)//雏鸡为1块钱3只,但总共为100只鸡 { if(i + j + k == 100 && 5 * i + 3 * j + k / 3 == 100 && k % 3 == 0)//必须加上k % 3 == 0;因为雏鸡的个数必须是3的倍数 printf("cock=%d,hen=%d,chicken=%d\n",i,j,k); } } } return 0; }
借鉴优化后的
#include <stdio.h> int main() { int i,j,k; for(i = 0;i < 20;i++) { for(j = 0;j < 34;j++) { k = 100 - i - j;//雏鸡的个数 if(5 * i + 3 * j + k / 3 == 100 && k % 3 == 0)//记住雏鸡是3的倍数 printf("cock=%d,hen=%d,chicken=%d\n",i,j,k); } } return 0; }
0.0分
2 人评分
The 3n + 1 problem (C语言代码)浏览:776 |
产生数 (C++代码)(大数乘法也是可以避免的么hhhh)浏览:1591 |
C语言程序设计教程(第三版)课后习题10.1 (C语言代码)浏览:736 |
母牛的故事 (C语言代码)浏览:1409 |
C语言程序设计教程(第三版)课后习题7.4 (C语言代码)浏览:643 |
C语言程序设计教程(第三版)课后习题10.5 (C语言代码)浏览:566 |
C语言程序设计教程(第三版)课后习题5.5 (C语言代码)浏览:577 |
C语言程序设计教程(第三版)课后习题4.9 (C语言代码)浏览:634 |
最小公倍数 (C语言代码)浏览:1105 |
循环入门练习5 (C语言代码)浏览:907 |