//百钱买百鸡的问题算是一套非常经典的不定方程的问题,题目很简单:
//公鸡5文钱一只,母鸡3文钱一只,小鸡3只一文钱,
//用100文钱买一百只鸡,其中公鸡,母鸡,小鸡都必须要有,问公鸡,母鸡,小鸡要买多少只刚好凑足100文钱。
以上为题目
首先要推导出
x+y+z=100
5x+3y+z/3=100
这样一组简单的公式 x y z分别代表公鸡 母鸡 小鸡
pragma solidity ^0.4.25;
contract buyChicken {
uint money = 100;
uint crock;//公鸡 x
uint hen;//母鸡 y
uint smallChicken;//小鸡
// x+y+z=100
// 5x+3y+z/3=100
function getChickenNumber() public returns(uint,uint,uint){
string[] cNumber;
// 遍历循环 在范围内尝试组合答案
//最后用if加上条件判断收束结果范围
for(crock = 0; crock < 20; crock++){//公鸡最大范围
//这里crock = 1也可以 但要去掉下面if中的crock > 0
for(hen = 0;hen < 33; hen ++){//hen最大范围
smallChicken = 100 - crock - hen;
//三个条件 公鸡数量>0 小鸡取余=0 价格总和100
if((crock > 0) && (smallChicken % 3 == 0) && (5*crock + 3*hen + smallChicken / 3 ==100)){
return (crock,hen,smallChicken);
}
}
}
}
}