新浪博客

“分西瓜问题”的求解

2007-11-30 21:06阅读:
在信息奥赛的训练中,一些难道较大的习题常常会阻碍学生的前进。而同时,如果学生能跨过这些障碍,编辑能力将得到极大的提高。当学生经过长时间的思考仍不能解决难题时,辅导老师给出一点参考是有必要的。以下是对一道习题的分析与求解,希望对同仁有所裨益。

题目:
某机关组织游泳比赛。将一堆西瓜分给前三名,把该堆西瓜中的一半又半个西瓜奖给第一名;剩下的一半又半个西瓜给第二名;把最后剩下的一半又半个西瓜给第三名,但每次分时并没切开任何一个西瓜,且刚好西瓜分完。问前三名各分到多少个西瓜?

思路:
(1)从总西瓜数出发解决问题

解答1
设总西瓜数为s,前三名分到的西瓜数分别为a,b,c
a=s/2+0.5
b=(s-a)/2+0.5
c=(s-a-b)/2+0.5
西瓜刚好分完,则s=a+b+c
没有切开西瓜,说明a,b是整数。s是一个奇数。
要把西瓜分给三个人,则s最小也不能小于3。我们就首先设s=3,看能不能完成分配。不行话,就把s的值增加2,变成5,看行不行。就这样,把s的值每一次增加2,直到找到能完成分配的数。

程序:
var
s,a,b,c:real;{定义s,a,b,c。因为求a,b,c时用到了除法,所以定义为实型}
begin
s:=1;s赋初值为1
repeat
s:=s+2;s的值每循环一次增加2s的初值为1,所以是从s=3开始分配的。}
a:=s/2+0.5;{计算a的值}
b:=(s-a)/2+0.5;{计算b的值}

我的更多文章

下载客户端阅读体验更佳

APP专享