0.5x+0.8y+2.1z=100
x+y+z=100
照理说是无穷解,但是这里有个隐藏条件,x、y、z是正整数,所以就有限起来了,当然结果还是很多
这里先这样看,100*0.5=50,100*0.8=80,100*2.1=210
所以桃子肯定有,问题是多少斤,基本上可以肯定在10斤以上(剩余79斤,太多),30斤以下(剩余37斤,太少)
由于都是小数点后一位,以10斤为基础单位吧
所以假设是20斤
0.5x+0.8y=58,x+1.6y=116
x+y=80
0.6y=36,y=60,x=20
得到一个解
20斤苹果,60斤橙子,20斤桃子
这种题目用隐枚举法最好做(在一定的逻辑工作后有选择的枚举),像这里的范围可以肯定10斤~23斤的,最多只要计算13次
如果一定要公式之类的算,先把z看作常数
x+y=100-z
0.5x+0.8y=100-2.1z
0.6y=((200-4.2z)-100+z)=100-3.2z
然后
z=(100-0.6y)/3.2=(500-3y)/16=31+(4-3y)/16
接着由于z和y都是正整数,y的取值就有特点了
首先一眼就看出来,当y=-4,z=32,然后y要变大,把增加的y剥离出来看
3y/16,所以y必然是以16为单位递增的,那么y的数量都出来了
y=12+16(k-1),k属于自然数
这样z也能得到递推式子,z=29-3(k-1),k属于自然数
那么进而,x=100-y-z=100-12-16(k-1)-29+3(k-1)=59-13(k-1),k属于自然数
然后可以用xyz属于自然数再作k上限
29-3(10-1)=2,59-13(5-1)=7,综上所述,k属于自然数,且,k属于[1,7]
总共有7组解
嘛,总之这种算法就麻烦了,懂否?