首页 > 聚焦 > > 内容

【读书笔记】趣味数学及编程拓展(第2版) 第4章

发表时间:2023-08-20 05:07:05 来源:哔哩哔哩

第4章 方程经典汇趣

解方程(不等式)是数学的基本课题之一,许多实际应用问题的求解往往归结为解某一方程(不等式)或方程组来完成。


(资料图片仅供参考)

韩信点兵

韩信点兵的故事,让士兵排队报数,按从1-5报数,记下最末一个士兵报的数为1;再按从1-6报数,记下最末一个士兵报的数为5;按从1-7报数,记下最末一个士兵报的数为4;最后,按从1-11报数,记下最末一个士兵报的数为10,问韩信的排队中有多少士兵。

韩信点兵的版本有很多。它形成了一类问题,也就是初等数论中的解同余式。

【编程题】

n遍报数,第i遍从1-p(i)报数时,最末一个士兵报数为r(i),这里i=1,2,...,n

从键盘输入n及各个p(i)与r(i),计算并输出满足这报n遍数的3个最少人数。

古代趣算

百鸡问题

百鸡问题是一个数学问题,出自中国古代约5—6世纪成书的《张丘建算经》,是原书卷下第38题,也是全书的最后一题,该问题导致三元不定方程组,其重要之处在于开创“一问多答”的先例。

百鸡问题:今有鸡翁一,值钱伍;鸡母一,值钱三;鸡雏三,值钱一。凡百钱买鸡百只,问鸡翁、鸡母、鸡雏各几何?

这个问题可列如下方程

x+y+z =100

5x+3y+(1/3)z =100

以上有两个方程,三个未知量,称为不定方程组,有多种解。

采用加减消元法,消去一个变量,可得另外两个变量的关系式,再探测判定解。

【编程题】

用100个钱买100只鸡,其中公鸡5个钱1只,母鸡3个钱1只,而小鸡1个钱买d只,整数d从键盘输入,问公鸡母鸡与小鸡各买了多少只?

羊犬鸡兔问题

今有五羊四犬三鸡二兔值钱一千四百九十六,四羊二犬六鸡三兔值钱一千一百七十五,三羊一犬七鸡五兔值钱九百五十八,二羊三犬五鸡一兔值钱八百六十一。求每只羊、犬、鸡、兔各值多少钱?

这是多元线性方程组。可以用加减消元法。

【编程题】

用枚举法(穷举法)求羊犬鸡兔问题

国外趣算

牛顿“牛吃草问题”

牛顿在他的《普通算术》一书中,有一道关于牛在牧场上吃草的问题,即牛在牧场上吃草,牧场上的草在不断地、均匀地生长。后人把这类问题称为牛吃草问题或叫做“牛顿问题”。

牧场上有一片青草,每天都生长得一样快。这片青草供给27头牛吃,可以吃6天;或者供给23头牛吃,可以吃9天,其间草一直在生长。如果这些草供给21头牛吃,可以吃多少天?

这是一个多元方程组求解问题。

【编程题】

把牛顿“牛吃草问题”中的5个整数由系统随机产生,由游戏者提供答案,主持给出评判,如果参赛者答案错误,则给出正确解答。

100!结尾多少个0

这是一个阶乘计算问题。

试确定100!的结尾有几个0.

这个问题可转换为统计5因数的个数。具体推导可以看书或百度

【编程题】

对于指定的正整数n,试确定阶乘n!的结尾0的个数。

对于指定的正整数m,试确定k!的结尾至少有m个0的整数k的最小值。

加减得1游戏

主持人给出两个整数,至少加减运算多少次能得到1?

如16,9

16+16+16+16-9-9-9-9-9-9-9=1

9+9+9+9+9+9+9+9+9-16-16-16-16-16=1

这个问题可以转为不定方程 16X -9Y = ±1

【编程题】

输入不同的两个正整数a,b(1<b<a),输出得到1的最少运算次数及运算式。如果无法得到,则予以说明。

多元不定方程组

双和不定方程组

问题:给定下面的方程组

X + Y + Z = 90

1/X + 1/Y + 1/Z = 1/6

试求整数X,Y,Z。(约定X<Y<Z)

【编程题】

已知n是一个正整数(n≤100),求解基于n的不定方程组

a + b + c = d + e + f = n

1/a + 1/b + 1/c = 1/d + 1/e + 1/f

从键盘输入正整数n,求出方程组的所有正整数解(约定a<b<c,d<e<f,a<d)

和积不定方程组

问题:给定下面的方程组

X + Y + Z = 100

XYZ = 28080

试求整数X,Y,Z。(约定X<Y<Z)

【编程题】

已知n是一个正整数(n≤150),求解基于n的不定方程组

a + b + c = d + e + f = g + h + i = n

abc = def = ghi

从键盘输入正整数n,求出方程组的所有正整数解(约定a<b<c,d<e<f,g<h<i,a<d)

解不等式

某些涉及整数的不等式求解用通常推理的方法是无法完成的,这就为应用程序涉及解这些不等式提供了空间。

调和数列不等式

【编程题】

对指定的正数x, y(2<x<y),试求满足调和数列不等式的正整数n。

x < 1+ 1/2 + 1/3 + ┉ + 1/n < y

输入正整数x,y,输出正整数n的取值范围。

代数和不等式

【编程题】

试解下列关于正整数n的代数和不等式

1 + 1/sqrt(2) - 1/sqrt(3) + 1/sqrt(4) + 1/sqrt(5) - 1/sqrt(6) + ┉ ± 1/sqrt(n) > d

(表达式中符号为两个加号后一个减号)

从键盘输入正数d(d>1),输出正整数n的值。

和与积的整数部分

平方根的两个和

【编程题】

试求区间[c, d]上整数的平方根和S1和平方根倒数和S2的整数部分

S1 = sqrt(c) + sqrt(c+1) + sqrt(c+2) + ┉ + sqrt(d)

S2 = 1/sqrt(c) + 1/sqrt(c+1) + 1/sqrt(c+2) + ┉ + 1/sqrt(d)

分数连乘积

【编程题】

给定区间[c, d],探求分数连乘积的整数部分

T = ( (2c)(2c+2)┉(2d) ) / ( (2c-1)(2c+1)┉(2d-1) )

(式中,分子全为偶数,分母全为奇数,各个分子比相应分母多1)

猴子分桃与水手分椰子

猴子分桃

猴子分桃:海滩上有一堆桃子,五只猴子来分。第一只猴子把这堆桃子平均分为五份,多了一个,这只猴子把多的一个扔入海中,拿走了一份。第二只猴子把剩下的桃子又平均分成五份,又多了一个,它同样把多的一个扔入海中,拿走了一份。第三、第四、第五只猴子都是这样做的,问海滩上原来最少有多少个桃子?

求解可以百度

【编程题】

海滩上有一堆桃子,n只猴子来分。第一只猴子把这堆桃子平均分为n份,多了一个,这只猴子把多的一个扔入海中,拿走了一份。第二只猴子到第n只猴子都遇到同样的情况,并同样处理,都是扔掉一个桃子后,恰好可以分成n等份。

输入猴子数n(1<n<9),输出这堆桃子至少有多少个,并逐次输出分桃数量。

水手分椰子

五个水手来到一个岛上,采了一堆椰子后,因为疲劳都睡着了。一段时间后,第一个水手醒来,悄悄地将椰子等分成五份,多出一个椰子,便给了旁边的猴子,然后自己藏起一份,再将剩下的椰子重新合在一起,继续睡觉。不久,第二名水手醒来,同样将椰子了等分成五份,恰好也多出一个,也给了猴子。然而自己也藏起一份,再将剩下的椰子重新合在一起。以后每个水手都如此分了一次并都藏起一份,也恰好都把多出的一个给了猴子。第二天,五个水手醒来,发现椰子少了许多,心照不喧,便把剩下的椰子分成五份,恰好又多出一个,给了猴子。请问水手最初最少摘了多少个椰子?

解佩尔方程

佩尔方程,是一种不定二次方程。

x^2 - n y^2 = 1 (其中,n为非平方正整数)

通常把佩尔方程中x,y中有一个为零的解称为平凡解,非零解称为非平凡解,最小正整数非平凡解称为基本解,求出基本解,其他解可由基本解推出。

【编程题】

探求佩尔方程的基本解

枚举试探求解

用枚举法逐个探测。这个只能处理n较小的情况

应用连分数高精求解

拉格朗日给出了解决方案 ,应用连分数求解佩尔方程。

具体可以百度

【读者体会】

这一章介绍了一些经典的方程。

如果需要编程求解方程。

编程设计要点。枚举法。

1)推理。分析方程或方程组,推理得到参数之间的关系或取值范围(递进规律)

2)枚举。设置处理循环

3)判定方程是否成立。

4)输出。

标签:

Copyright ©  2015-2022 澳门网版权所有  备案号:京ICP备2022022245号-14   联系邮箱:435 226 40@qq.com