主题:一道数学题··
huiyu789
[专家分:0] 发布于 2005-10-02 21:45:00
一个炊事员上街采购,用500元钱买90只鸡,其中母鸡一只15元,公鸡一只10元,小
鸡一只5元,正好把钱用完。问母鸡、公鸡、小鸡各买了多少只?
朋友,懂不?我也自己调试了一个程序,但感觉有点复杂,所以来请教请教···
回复列表 (共12个回复)
沙发
smartq [专家分:80] 发布于 2005-10-03 09:27:00
程序如下:
program checkens;
var
begin
for i:=1 to 500 do
for j:=1 to 500 do
for k:=1 to 500 do
if (i*15+j*10+k*5=500) then writeln(i,' ',j,' ',k,' ')
end.
典型的搜索题,一般的题目都包含有搜索,起码占了80%,所以搜索一定要学好!!!
板凳
huiyu789 [专家分:0] 发布于 2005-10-03 20:22:00
怎么你调试的好像不对啊,输出的答案是错误的!!!!!!!!
3 楼
绿步甲 [专家分:1610] 发布于 2005-10-03 20:41:00
应该在(i*15+j*10+k*5=500)后加and(i+j+k)=90才行
4 楼
阿Ben [专家分:2200] 发布于 2005-10-03 20:58:00
楼上的,不是加 and(i+j+k)=90
而是加 and(i+j+k=90)
注意括号!
5 楼
lzl1403 [专家分:1670] 发布于 2005-10-03 22:35:00
不用三重循环吧!只需两重循环,循环公鸡、母鸡只数,然后算出小鸡只数,如果小鸡只数是整数就输出就行了
6 楼
阿Ben [专家分:2200] 发布于 2005-10-03 22:45:00
哇!太支持楼上了!
7 楼
eboy01 [专家分:160] 发布于 2005-10-04 13:18:00
应该到 90 就够了吧????
program checkens;
var
begin
for i:=1 to 90 do
for j:=1 to 90 do
begin
k:=90-i-j;
if (i*15+j*10+k*5=500) then writeln(i,' ',j,' ',k,' ')
end;
end.
而且还可以进一步简便: i到33,j到9就行了~~~
8 楼
风花雪月☆雨 [专家分:460] 发布于 2005-10-04 14:03:00
。。。。。。。。。小学5年级就做过了
9 楼
QQ331373582 [专家分:1500] 发布于 2005-10-06 10:18:00
var a,b,c:integer;
begin
for a:=0 to 500 div 15 do
for b:=0 to 50 do
for c:=0 to 90 do begin
if(a+b+c=90)and(15*a+10*b+5*c=500)then begin
writeln(a,' ',b,' ',c,' ')
end;
end;
end.
10 楼
boxertony [专家分:23030] 发布于 2005-10-06 20:51:00
最简单的是一重循环就够了。
我来回复