实验一(共3题,完成3题)
1.1
水手、猴子和椰子问题:五个水手带了一只猴子来到南太平洋的一个荒
岛上,发现那里有一大堆椰子。由于旅途的颠簸,大家都很疲惫,很快就入睡了。第一个水手醒来后,把椰子平分成五堆,将多余的一只给了猴子,他私藏了一堆后便又去睡了。第二、第三、第四、第五个水手也陆续起来,和第一个水手一样,把椰子分成五堆,恰多一只给猴子,私藏一堆,再去入睡,天亮以后,大家把余下的椰子重新等分成五堆,每人分一堆,正好余一只再给猴子,试问原先共有几只椰子?
试分析椰子数目的变化规律,利用逆向递推的方法求解这一问题(15621)。算法分析:
本题总的椰子树是不唯一的,我们只能找到最小的的那一个数值。这个时候我们要逐个搜索,设最少的椰子数为p,我们利用x的变化来寻找,根据题意有p=5*x+1.得到这个最小的p值后,我们利用循环体来分六次,按照分椰子的规律,我们有一次循环后p=4*(p-1)/5,按照逆向递推的方法,我们就把循环体改成p=5*p/4+1,此时我们就可以逐个增大x的值,直到循环后的p恒等于p向下取整的数为止。源程序为:
n=input('inputn:');forx=1:n
p=5*x+1;fork=1:5
p=5*p/4+1;end
ifp==fix(p)
break;endenddisp(p)
运行结果为:>>inputn:3000
15621
结果分析:经过5次分椰子后,分别还剩下12496,9996,7996,6369,5116,最后一次每个人得到1023个椰子,这个时候已经不能再分了。故我们说我们这个分法是合理的。
xn
1.2设,In dx
05 x
1
(1)从I0尽可能精确的近似值出发,利用递推公式: