第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