姓氏排序:pcw-ys@vip.sina.com
拿到这个题目,心中的第一个想法就是,这肯定就是一个三元一次方程组求解的问题,先敲定一个变量的值,再利用另外两个值循环。
但是,就本题目来讲,一味的蛮干循环,将会增加程序的复杂度,效率肯定不高,经简单分析:此题中所求的变量值有一个最基本的值域范围,我们设定所求的公鸡数目变量为maleChick_num、母鸡数目为femaleChick_num、雏鸡数目为childChick_num,这样一个基本值域可以确定:maleChick_num∈[0,20], femaleChick_num∈[0,33], childChick_num无论多少肯定在0~100之间,但是由题目“每3只鸡子价值一钱”可知,雏鸡的数目必定是3的倍数,这样就可确定雏鸡的数目是100内的3的倍数。好了,范围一步步缩小,题目结果顷刻可见!
围绕题目,心中必须有这两个方程
1). maleChick_num*5+femaleChick_num*3+childChick_num/3==100
2). maleChick_num+femaleChick_num+childChick_num==100
第一个方程是根据总钱数而定,无论三样鸡子各买多少,但总“资本”是定额;第二个方程是根据所有鸡子的数目而定,无论您钱有多少,“市场”的“资源”是有限的(仅100只鸡子)。
为了得到雏鸡数目的精确值域,定义一个中间变量childChick_tempNum[j],用来存储100内3的倍数,如下:
int j = 0;
for (int i = 1; i <= 100; i++) {
if (i % 3 == 0) {