关于解不定方程一类题的解法
- 格式:doc
- 大小:51.50 KB
- 文档页数:9
数量关系对很多考生来说是不太好掌握的一个模块,而且大家普遍从心底上认为数学很难,其实不然,数量关系题目是有难度梯度的,也是有简单,普通难度的题目以及难题,难题大家可根据基础和学习的吸收程度来决定是否做,但是像简单的题目,根据以往的学习基础,基本可以解决,普通难度的题目,大家掌握一些技巧也可以很快的解决这些题目。
那么我们就来了解一下对于不定方程类题目的解题技巧。
一,什么是不定方程不定方程:未知数的个数大于独立方程,例如x+y=7,未知数有2个,而独立方程仅有1个。
【例题】某儿童艺术培训中心有5名钢琴教师和6名拉丁舞教师, 培训中心将所有的钢琴学员和拉丁舞学员共76人分别平均地分给各个老师带领, 刚好能够分完, 且每位老师所带的学生数量都是质数。
后来由于学生人数减少, 培训中心只保留了4名钢琴教师和3名拉丁舞教师, 但每名教师所带的学生数量不变, 那么目前培训中心还剩下学员多少人?()A.36B.37C.39D.41根据题目要求出还剩多少人,需要知道钢琴教师和拉丁舞教师每人分别能带多少学生,这在题目中都没有给出,我们可以假设教师,钢琴教师每人可带x 人,拉丁舞教师可带y人,而其已知在之前共培训76人,可知5x+7y=76,这里仅能得到这样一个方程,却有两个未知数,即为不定方程的题目。
我们可以看到虽然方程的解很多,但是在我们的方程中的x,y它代表的是学生的人数,对于学生来说,它不可能取值为小数负数或者是零,取值大多数为正整数,解的范围就输小很多了,那如何来快速确定答案呢?我们了解几个解题技巧。
二,不定方程的解题技巧1,整除法例如:3x+7y=33,x,y为正整数,求y=?A.2B.3C.4D.5根据已知条件我们可以3x和33有一个共性都能被3整除,被3整除的数加上一个数还能被3整除,所以7y也是能被3除的,则y就要能被7整除,结合选项可知选则B。
2,尾数法例如:5x+7y=48,x,y为正整数,求y=?A.3B.4C.5D.6观察已知条件,对于5x而言。
不定方程解题最快的方法不定方程是数学中一类非常常见的方程,其特点是未知数的个数多于方程个数,无法通过直接列方程求解。
面对这种类型的问题,快速有效的解题方法对于学生和研究者来说至关重要。
在这篇文章中,我们将探讨不定方程解题最快的方法。
一、理解不定方程的特点不定方程的特点在于未知数的个数多于方程个数,因此无法直接列方程求解。
这种类型的方程常常出现在日常生活中,如人数、物品数量等不确定的场合。
因此,掌握不定方程的特点是解决这类问题的第一步。
二、观察法与列举法观察法是解决不定方程的初步方法,通过观察已知条件,可以发现一些规律或线索。
列举法则是将所有可能的答案列举出来,逐一验证是否符合题意。
这两种方法在解决简单的不定方程问题时非常有效。
三、代数法与公式法当不定方程的个数较少,可以通过列方程求解时,代数法和公式法就变得非常有用。
代数法是通过建立方程组,利用代数知识求解未知数。
公式法则是在某些特殊情况下,利用已知条件通过公式求解未知数。
这两种方法需要一定的数学基础和技巧。
四、技巧与策略除了上述方法外,解决不定方程还有一些技巧和策略。
首先,对于简单的方程组,可以通过枚举部分答案,利用排除法快速找到答案。
其次,对于较大规模的不定方程问题,可以利用数学软件或计算机程序进行求解,提高解题效率。
最后,理解不定方程的本质和特点,根据实际情况灵活选择合适的方法,是提高解题速度的关键。
五、案例分析假设有10个人参加一场聚会,每人至少有一种饮料选择(果汁、咖啡、茶)。
已知聚会场所提供了三种饮料(牛奶、可乐、啤酒),且每种饮料的数量都足够。
为了方便起见,我们设聚会场所提供的饮料数量分别为:牛奶10瓶,可乐20瓶,啤酒15瓶。
现在我们需要求解在这些人中,至少有一种饮料选择的人数。
这是一个典型的不定方程问题。
策略:根据上述技巧和策略,我们可以采取列举法逐一列举所有可能的选择,再排除不符合条件的答案。
答案:15人。
这是因为每个人至少有一种饮料选择,而聚会总共有10个人,因此至少有一种饮料选择的人数为10+1=11-3=8+2=7+4=15人。
小学不定方程试题及答案1. 某数与7相加的和是15,这个数是多少?解答:设这个数为x,根据题意可列方程x + 7 = 15,解这个方程得到x = 15 - 7 = 8,所以这个数是8。
2. 某数的3倍减去6等于15,这个数是多少?解答:设这个数为x,根据题意可列方程3x - 6 = 15,解这个方程得到3x = 15 + 6 = 21,所以x = 21 ÷ 3 = 7,所以这个数是7。
3. 某数的1/4加上9等于15,这个数是多少?解答:设这个数为x,根据题意可列方程1/4x + 9 = 15,解这个方程得到1/4x = 15 - 9 = 6,所以x = 6 × 4 = 24,所以这个数是24。
4. 某数的1/3减去2等于7,这个数是多少?解答:设这个数为x,根据题意可列方程1/3x - 2 = 7,解这个方程得到1/3x = 7 + 2 = 9,所以x = 9 × 3 = 27,所以这个数是27。
5. 某数的1/5加上4等于9,这个数是多少?解答:设这个数为x,根据题意可列方程1/5x + 4 = 9,解这个方程得到1/5x = 9 - 4 = 5,所以x = 5 × 5 = 25,所以这个数是25。
6. 某数的1/6减去3等于5,这个数是多少?解答:设这个数为x,根据题意可列方程1/6x - 3 = 5,解这个方程得到1/6x = 5 + 3 = 8,所以x = 8 × 6 = 48,所以这个数是48。
7. 某数的1/7加上2等于6,这个数是多少?解答:设这个数为x,根据题意可列方程1/7x + 2 = 6,解这个方程得到1/7x = 6 - 2 = 4,所以x = 4 × 7 = 28,所以这个数是28。
8. 某数的1/8减去1等于9,这个数是多少?解答:设这个数为x,根据题意可列方程1/8x - 1 = 9,解这个方程得到1/8x = 9 + 1 = 10,所以x = 10 × 8 = 80,所以这个数是80。
小学数学复习:不定方程解题方法_题型归纳
一天,小强在家里做数学作业时,遇到了一题难题,这道题目是:有一次,小红问小军的生日,小军说:“把我的月份数乘以18,日期数乘以12的和只要等于108就行了。
试用最单的方法算出小军的生日是几月几日?
可是:
设小军的生日月份为x,月份的日期y
18x+12y=108
在解决问题的时候,小强的心里想:在方程式里,怎么会出现一个式子里就有两个未知数呢?突然间小强明白了这道题的方法:原来这是一道不定方程。
小强问妈妈:什么是不定方程呢?妈妈说:在一个等式里未知数个数多于方程个数的方程叫做不定方程。
例如:刚才你思考的题目中所列出的方程,就是属于不定方程。
小强听了妈妈的讲解方法,终于解出了那道不定方程,他的解法是:将18x+12y=108,变形后得:y=(108-18x)÷12,即y=9-1。
5x,因为x,y均为整数,且1≤x≤12,1≤y≤31,根据该方程,2≤x≤4,当x=2时,y=6;当x=4时,y=3。
高中数学解题技巧之不定方程求解不定方程在高中数学中是一个重要的概念,涉及到求解方程中的未知数的取值范围。
本文将介绍不定方程的求解方法和一些解题技巧,帮助高中学生更好地应对这类题目。
一、不定方程的定义和基本概念不定方程是指含有未知数的方程,但未知数的取值范围不确定,需要通过一定的条件来求解。
常见的不定方程包括线性不定方程、二次不定方程等。
例如,求解线性不定方程3x + 4y = 7,其中x和y为未知数。
这个方程的解是指满足条件的x和y的取值,使得等式成立。
二、线性不定方程的求解方法1. 列举法:对于简单的线性不定方程,可以通过列举的方法来求解。
例如,解线性不定方程3x + 4y = 7,我们可以列举出一些满足条件的整数解,如(1, 1)、(3, 1)等。
通过观察这些解的规律,我们可以发现解的特点,进而得到一般解。
2. 欧几里得算法:对于形如ax + by = c的线性不定方程,可以利用欧几里得算法来求解。
首先,我们需要找到一个特殊解(x0, y0),然后利用欧几里得算法求出方程的通解。
例如,求解线性不定方程3x + 4y = 7。
我们可以先找到一个特殊解(3, -2),然后利用欧几里得算法求出方程的通解。
具体步骤如下:步骤一:利用欧几里得算法求出3和4的最大公约数d,同时求出一组整数解(u0, v0),使得3u0 + 4v0 = d。
步骤二:将方程两边同时除以d,得到(3/d)x + (4/d)y = 7/d。
步骤三:将特殊解(3, -2)代入上式,得到(3/d)x + (4/d)y = 7/d。
通过观察我们可以发现,方程的通解为x = 3 + 4k,y = -2 - 3k,其中k为整数。
三、二次不定方程的求解方法二次不定方程是指含有二次项的不定方程,例如x^2 + y^2 = 25。
对于这类方程,我们可以利用一些特定的方法来求解。
1. 分类讨论法:对于形如x^2 + y^2 = n的二次不定方程,我们可以通过分类讨论的方法来求解。
一次不定方程的解法我们现在就这个问题,先给出一个定理.定理 如果,a b 是互质的正整数,c 是整数,且方程ax by c += ①有一组整数解00,x y 则此方程的一切整数解可以表示为00x x bty y at =-⎧⎨=+⎩其中0,1,2,3,t =±±±…证 因为00,x y 是方程①的整数解,当然满足00ax by c += ②因此0000()()a x bt b y at ax by c -++=+=.这表明0x x bt =-,0y y at =+也是方程①的解. 设,x y ''是方程①的任一整数解,则有ax by c ''+= ③③-②得 00()()a x x b y y ''-=-- ④由于(,)1a b =,所以0a y y '-,即0y y at '=+,其中t 是整数.将0y y at '=+代入④,即得0x x bt '=-.因此,x y ''可以表示成0x x bt =-,0y y at =+的形式,所以0x x bt =-,0y y at =+表示方程①的一切整数解,命题得证.有了上述定理,求解二元一次不定方程的关键是求它的一组特殊解.例1 求11157x y +=的整数解.解法1 将方程变形得71511y x -=因为x 是整数,所以715y -应是11的倍数.由观察得002,1x y ==-是这个方程的一组整数解,所以方程的解为215111x t y t=-⎧⎨=-+⎩ t 为整数解法2 先考察11151x y +=,通过观察易得11(4)1531⨯-+⨯=,所以11(47)15(37)7⨯-⨯+⨯⨯=,可取0028,21x y =-=,从而28152111x ty t=--⎧⎨=+⎩ t 为整数 可见,二元一次不定方程在无约束条件的情况下,通常有无数组整数解,由于求出的特解不同,同一个不定方程的解的形式可以不同,但它们所包含的全部解是一样的.将解中的参数t 做适当代换,就可化为同一形式.例2 求方程62290x y +=的非负整数解. 解 因为(6,22)2=,所以方程两边同除以2得31145x y += ①由观察知,114,1x y ==-是方程3111x y += ②的一组整数解,从而方程①的一组整数解为0045418045(1)45x y =⨯=⎧⎨=⨯-=-⎩ 由定理,可得方程①的一切整数解为18011453x ty t=-⎧⎨=-+⎩ 因为要求的是原方程的非负整数解,所以必有1801104530t t -≥⎧⎨-+≥⎩③ 由于t 是整数,由③得1516t ≤≤,所以只有15,16t t ==两种可能.当15,15,0t x y ===;当16,4,3t x y ===.所以原方程的非负整数解是150x y =⎧⎨=⎩ ,43x y =⎧⎨=⎩ 例3 求方程719213x y +=的所有正整数解.分析 这个方程的系数较大,用观察法去求其特殊解比较困难,碰到这种情况我们可用逐步缩小系数的方法使系数变小,最后再用观察法求得其解. 解 用方程719213x y += ①的最小系数7除方程①的各项,并移项得213193530277y yx y --==-+② 因为,x y 是整数,故357yu -=也是整数,于是573y u +=.化简得到573y u += ③令325uv -=(整数),由此得 253u v += ④由观察知11u v =-⎧⎨=⎩是方程④的一组解.将11u v =-⎧⎨=⎩代入③得2y =,再将2y =代入②得25x =.于是方程①有一组解00252x y =⎧⎨=⎩,所以它的一切解为251927x t y t =-⎧⎨=+⎩t 为整数由于要求方程的正整数解,所以25190270t t ->⎧⎨+>⎩解不等式,得t 只能取0,1.因此得原方程的正整数解为252x y =⎧⎨=⎩ ,69x y =⎧⎨=⎩ 当方程的系数较大时,我们还可以用辗转相除法求其特解,其解法结合例题说明. 例4 求方程3710725x y +=的整数解.解1072373337133433841=⨯+=⨯+=⨯+ 为用37和107表示1,我们把上述辗转相除过程回代,得13384=-⨯37484=--⨯ 3794=-⨯ 379(3733)=-⨯- 933837=⨯-⨯9(107237)837=⨯-⨯-⨯ 91072637=⨯-⨯ 37(26)1079=⨯-+⨯由此可知1126,9x y =-=是方程371071x y +=的一组整数解.于是025(26)650x =⨯-=-,0259225y =⨯=是方程3710725x y +=的一组整数解. 所以原方程的一切整数解为65010722537x t y t=--⎧⎨=+⎩ t 为整数例5 某国硬币有5分和7分两种,问用这两种硬币支付142分货款,有多少种不同的方法?解 设需x 枚7分,y 枚5分恰好支付142分,于是75142x y += ①所以142722222828555x x x y x x ---==-+=--由于7142x ≤,所以20x ≤,并且由上式知52(1)x -.因为(5,2)1=,所以51x -,从而1,6,11,16x =,所以①的非负整数解为127x y =⎧⎨=⎩ ,620x y =⎧⎨=⎩ ,1113x y =⎧⎨=⎩ ,166x y =⎧⎨=⎩所以,共有4种不同的支付方式.说明 当方程的系数较小时,而且是求非负整数解或者是实际问题时,这时候的解的组数往往较少,可以用整除的性质加上枚举,也能较容易地解出方程.多元一次不定方程可以化为二元一次不定方程. 例6 求方程92451000x y z +-=的整数解.解 设9243x y t +=,即38x y t +=,于是351000t z -=.于是原方程可化为38351000x y tt z +=⎧⎨-=⎩ ① 用前面的方法可以求得①的解为383x t y t u =-⎧⎨=-+⎩(u 是整数) ② ②的解为2000510003t vz v=+⎧⎨=+⎩ (v 是整数) ③ 消去t ,得600081520003510003x u v y u v z v =-+⎧⎪=-+-⎨⎪=+⎩(,u v 都是整数) 大约1500年以前,我国古代数学家张丘建在他编写的《张丘建算经》里,曾经提出并解决了“百钱买百鸡”这个有名的数学问题,通俗地讲就是下例.例7 今有公鸡每只五个钱,母鸡每只三个钱,小鸡每个钱三只.用100个钱买100只鸡,问公鸡、母鸡、小鸡各买了多少只?解 设公鸡、母鸡、小鸡各买,,x y z 只,由题意列方程组 ①②化简得159300x y z ++= ③ ③-②得148200x y +=即74100x y +=,解741x y +=得12x y =-⎧⎨=⎩于是74100x y +=的一个特解为⎧⎪⎨⎪⎩1531003x y z ++=100x y z ++=00100200x y =-⎧⎨=⎩ 由定理知74100x y +=的所有整数解为10042007x t y t =-+⎧⎨=-⎩t 为整数由题意知,0,,100x y z <<,所以0100410002007100t t <-+<⎧⎨<-<⎩t 为整数解得42528724142877t t ⎧<<⎪⎪⎨⎪<<⎪⎩∴ 425287t <<由于t 是整数,故t 只能取26,27,28,而且,,x y z 还应满足100x y z ++=.即可能有三种情况:4只公鸡,18只母鸡,78只小鸡;或8只公鸡,11只母鸡,81只小鸡;或12只公鸡,4只母鸡,84只小鸡.。
三元一次不定方程组的经典解题方法对于不定方程组很多同学都觉得摸不着头脑,未知数和方程数都较多,感觉自己好像会其实又不会。
那本文就来给大家讲解不定方程组的经典解法。
不定方程组常分为两种形式,一种是不定方程组求个体,另一种是不定方程组求整体的。
【例1】某公司的6名员工一起去用餐,他们各自购买了三种不同食品中的一种,且每人只购买了一份。
已知盖饭15元一份,水饺7元一份,面条9元一份,他们一共花费了60元。
问他们中最多有几人买了水饺?( )A. 1B. 2C. 3D. 4解析:此题是典型的不定方程组求个体的题型,方法是消元变成不定方程用数字特性或者代入排除法。
设出未知数,列方程为:⎩⎨⎧=++=++6097156z y x z y x因为求的是水饺,消掉未知数z 得到不定方程3x-y=3,变形得到方程y=3x-3,根据数字特性知道y 应该是3的倍数,答案选C 。
代入排除,只有选项C 带入x 可以得到整体,满足题意,答案选C 。
【例2】甲买了3支签字笔、7支圆珠笔和1支铅笔,共花了32元,乙买了4支同样的签字笔、10支圆珠笔和1支铅笔,共花了43元。
如果同样的签字笔、圆珠笔、铅笔各买一支,共用多少钱?( )A. 21元B. 11元C. 10元D. 17元 解析:本题是求的是整体z y x ++整体的题型,方法是极值法或待定系数法。
设未知数列方程为: ⎩⎨⎧=++=++431043273z y x z y x极值法:设y=0,得到方程:⎩⎨⎧=+=+434323z x z x ,解得x=11,z=-1 所以10=++z y x ,本题答案C 。
待定系数法:设x+y+z=a(3x+7y+z)+b(4x+10y+z)=(3a+4b)x+(7a+10b)y+(a+b)z根据相同未知数的系数相等得3a+4b=1;7a+10b=1;a+b=1。
解得a=3,b=﹣2.所以x+y+z=a(3x+7y+z)+b(4x+10y+z)=3×32-2×43=10,本题选C 。
三元一次不定方程的整数解例题三元一次不定方程是指具有三个未知数和一次项的方程,其一般形式为ax + by + cz = d,其中a、b、c、d为整数,且至少存在一组整数解。
解决三元一次不定方程的整数解例题是探索整数解的有效方法之一。
本文将从实际例题入手,详细讨论三元一次不定方程的整数解例题,并给出解题思路和步骤。
例题1:解方程2x + 3y + 4z = 13。
解题思路:由于题目中未给出具体要求整数解的范围,我们可以先从整数区间较小的范围开始尝试,逐渐扩大范围来寻找整数解。
由于方程中的系数和常数项皆为正数,且已知方程有整数解,我们可以通过逐一遍历来寻找符合条件的整数解。
解题步骤: 1. 假设x的取值范围为0至6(根据后续计算结果决定是否需要扩大取值范围),逐一代入方程。
2. 根据方程,得到y = (13 - 2x - 4z) / 3。
3. 找出符合整数解条件的y和z的组合,同时满足y和z都为整数。
4. 根据计算结果,判断是否存在整数解。
若存在,则给出解的具体值。
通过计算得出的整数解为x = 3,y = 1,z = 2。
验证方程2x + 3y + 4z = 13,可以发现等式成立,因此该解为方程的整数解。
例题2:解方程5x + 8y + 10z = 57。
解题思路:同样地,我们先从整数区间较小的范围开始尝试,逐渐扩大范围来寻找整数解。
根据方程,我们可以发现系数5、8和10都是偶数,而常数项57也是奇数。
根据奇数与偶数相加的结果为奇数,并没有整除规律可循,因此我们需要更加细致的计算来找到解。
解题步骤: 1. 假设x的取值范围为0至9。
2. 根据方程,得出y = (57 - 5x - 10z) / 8。
3. 代入x和z 的取值范围,逐一计算y的可能取值。
4. 判断y是否为整数,若为整数则继续下一步骤,否则继续尝试下一组解。
5. 判断z是否为整数,若为整数则继续下一步骤,否则继续尝试下一组解。
行测数学运算中不定方程问题全方位解法华图教育李炳辉不定方程不仅仅是省考的常见考点,更是国考中数学运算的重点,基本上每年都是必考的题目,在2012年国考中,出现3道不定方程的问题,因此,不定方程问题一定要引起广大考生的注意和重视,广大考生全面掌握不定方程的解法,在以后的考场上可以更游刃有余。
二元一次不定方程解法1:代入排除法例题:(2007年北京社招)装某种产品的盒子有大、小两种,大盒每盒能装11个,小盒每盒能装8个,要把89个产品装入盒内,要求每个盒子都恰好装满,需要大、小盒子各多少个?A.3,7B.4,6C.5,4D.6,3解析:设大小盒分别为x、y,根据题目有11x+8y=89,只有这一个方程,两个未知数,若单独求解x和y,没有其它限制则有无数个解,可以用直接代入法来解,分别把选项代入,只有A选项代入后符合方程,即A选项符合条件,选A。
练习:(2009年北京应届)有若干张卡片,其中一部分写着1.1,另一部分写着1.11,它们的和恰好是43.21。
写有1.1和1.11的卡片各有多少张?A.8张,31张B.28张,11张C.35张,11张D.41张,1张解析:用代入排除法,代入后A选项符合答案。
注:方程问题当选项内容充分,即全解可以使用代入排除法解题。
解法2:数字特性法例题1:(2012年国考)某儿童艺术培训中心有5名钢琴教师和6名拉丁舞教师,培训中心将所有的钢琴学员和拉丁舞学员共76人分剐平均地分给各个老师带领,刚好能够分完,且每位老师所带的学生数量都是质数。
后来由于学生人数减少,培训中心只保留了4名钢琴教师和3名拉丁舞教师,但每名教师所带的学生数量不变,那么目前培训中心还剩下学员多少人?A.36B.37C.39D.41解析:根据题目,设每位钢琴老师带x人,拉丁老师带y人,只可以列出一个方程5x+6y=76,则根据奇偶特性,76是偶数,6y也是偶数,则5x一定为偶数,即x必为偶数。
又根据题目中每位老师所带的学生数量都是质数,则x既为偶数也是质数,则x=2,代入方程后可以求出y=11,则,根据题目,剩下的学员为,4×2+3×11=41,选D项。
应用pell方程解一类高次不定方程的计算公式Pell方程是一类特定的高次不定方程,它最早由英国数学家John Pell(1611-1685年)提出,描述如下:给定正整数a,b和c,找出整数x和y,使得方程ax2 + bxy + cy2 = 1成立。
称之为Pell方程。
解Pell方程的意义Pell方程的解法可以表示为一个整数计算公式,它可以用来解决许多复杂的数学问题,包括椭圆曲线的研究、数论的研究以及整数的拆分问题等。
更重要的是,它在金融、密码学、数学建模等领域都有广泛的应用。
应用Pell方程解一类高次不定方程的计算公式Pell方程的计算公式可用于解一类高次不定方程,并可鉴定出此方程是否可用于解求解。
方法:(1)假设有一类高次不定方程,为:ax2 + bxy + dy2 = 1,初始参数a、b、d均为正整数,e为参数e,f为参数f;(2)用Pell方程的计算公式求解,即:e=ax2 - bxy + dy2, f=2ax - by;(3)求解e和f,检验是否符合Pell方程,即:e2 - 2af + b2f2 = 4ad - b2;(4)继续计算e和f,求出e、f、x、y解,为ax2 + bxy + cy2 = 1有解。
Pell方程的特点Pell方程在解求一类高次不定方程上有其独特的优点,主要有以下几点:(1)Pell方程采用迭代算法,可以得出解析式,可以在有限步数内求出解析解;(2)Pell方程依赖变量中的数学性质,不需要通过一般的数值方法获得解析解;(3)由于它依赖变量中的数学性质,在解求一类高次不定方程时,可以减少计算时间和资源,可以说极大地提高效率;(4)它十分适用于解求线性常数系数微分方程组,特别是当变量中有多项式时,该方法可以有效解决。
总结以上就是关于应用Pell方程解一类高次不定方程的计算公式的简要介绍,它可以有效解决一类高次不定方程,从而满足计算的需求。
Pell方程具有不可替代的优势,可以实现大量的复杂计算,提高计算效率。
关于解不定方程一类题的解法广东北江中学薛矛【摘要】解不定方程这一类问题属于数学问题的一个分支,虽说出现频率不是十分大,但还是有必要掌握它的一般解法的。
本文将介绍不定方程的一般解法。
【正文】先看一下下面这道题目:『例1』SGU106-The equation①There is an equation ax + by + c = 0. Given a,b,c,x1,x2,y1,y2 you must determine, how many integer roots of this equation are satisfy to the following conditions : x1<=x<=x2, y1<=y<=y2. Integer root of this equation is a pair of integer numbers (x,y).InputInput contains integer numbers a,b,c,x1,x2,y1,y2 delimited by spaces and line breaks. All numbers are not greater than 108 by absolute value.OutputWrite answer to the output.Sample Input1 1 -30 40 4Sample Output4题目的意思是说:给出一个方程ax+by+c=0,以及x1,x2,y1,y2,求出方程有多少组整数解(x,y)满足x1≤x≤x2和y1≤y≤y2。
这是一道典型的解不定方程类题目。
从中我们可以详细分析一下这类题目的解法。
解不定方程通常是先计算出一组可行解,然后再推算出所有解。
例如这题,我们可以先算出任意一组整数解(x,y),然后利用不定方程解的性质推出其他的整数解,计算出有多少组整数解满足x1≤x≤x2和y1≤y≤y2。
求任意一组整数解的方法如下:当y取整数时,要保证x也取到整数,必须满足by+c≡0 (mod a)。
于是我们只需求这个线性模方程:by≡-c (mod a)。
如果a①题目来源:SGU. Problem Set 106 (acm.sgu.ru)或b是负数,我们可以将他们先转成为正数。
解出y以后代入方程就能得出相应的x的值,这样就求出了一组解(x,y)。
求解线性模方程的算法在很多书上都有介绍。
这里只是简略叙述一下。
要解线性模方程ax≡c (mod b),必须先算出a,b的最大公约数k=Gcd(a,b)。
如果c是k的倍数,则这个模方程有解,否则无解(道理很简单,这里不详细证明)。
如果我们能得出ax0+by0=k,那么ax0≡k (mod b),因此ax0*(c/k) ≡c (mod b)。
于是x=x0*(c/k)就是线性模方程的一个解了。
现在关键是寻找满足ax0+by0=k的一组解(x0,y0)。
求这个解可以用辗转相除法的改进算法,在求解Gcd(a,b)的过程中顺带求出其中a,b应满足a>b≥0。
在递归回来的每一重函数中,都能保证ax0+by0=Gcd(a,b),这个可以用归纳法证明。
我们只需调用函数Gcd(a,b)就能求出a,b的最大公约数和x0,y0。
这样我们就能求出不定方程的一组可行解(x,y)了。
然后其他的解都可以通过这组解推出。
设k=Gcd(|a|,|b|),则当a,b异号时,不定方程的解可以表示为:(x+n*|b|/k,y+n*|a|/k);当a,b同号时,不定方程的解可以表示为:(x+n*|b|/k,y-n*|a|/k)。
(其中n为任意整数)。
对于这道题来说,我们只需按照一般解法求出一组可行解(x,y),在有多少个解符合x1≤x≤x2和y1≤y≤y2就行了。
再看一下下面这题:『例2』SGU141. Jumping Joe②Joe is a frog who likes to jump a lot. In fact, that's all he does: he jumps forwards and backwards on the integer axis (a straight line on which all the integer numbers, both positive and negative are marked). At first, Joe sits next to the point marked with 0. From here, he can jump in the positive or the negative direction a distance equal to either x1 or x2. From the point where he arrived, he can jump again a distance equal to ②题目来源:SGU. Problem Set 141 (acm.sgu.ru)x1 or x2, in the positive or the negative direction and so on.. Joe wants to arrive next to the point marked with the number P, after exactly K jumps. You have to decide whether such a thing is possible.InputThe input will contain four integers: x1, x2 (0 < x1 , x2 < 40 000), P (-40 000 < P <40 000) and K (0 <= K < 2 000 000 000), separated by blanks.OutputThe first line of output will contain the word "YES", in case Joe can reach the point marked with P after exactly K jumps, or "NO", otherwise. In case the answer is "YES", the next line should contain four integers, separated by blanks: P1, N1, P2 and N2. P1 is the number of times Joe jumped in the positive direction a distance equal to x1. N1 is the number of times Joe jumped in the negative direction a distance equal to x1. P2 is the number of times Joe jumped in the positive direction a distance equalto x2. N2 is the number of times Joe jumped in the negative direction a distance equal to x2. In other words, you should find four non-negative integers, so that:P1*x1 - N1*x1 + P2*x2 - N2*x2 = PP1 + N1 + P2 + N2 = KIn case there are more quadruples (P1,N1,P2,N2) which are solutions for the problem, you may print any of them.Sample Input2 3 -1 12Sample OutputYES1 0 5 6题目的意思是说Joe处在数轴上的原点,他每次可以往左或往右跳一步,步长有两种:x1和x2(x1,x2均为整数)。
数轴上有一个整点P,给出K,问Joe 是否能够刚好跳K次到达P点。
若存在,则输出”YES”,并在第二行输出P1,N1,P2,N2,使P1*x1 - N1*x1 + P2*x2 - N2*x2 = P;否则输出”NO”。
这也是一道关于解不定方程的题。
类似地,我们可以先求出q=Gcd(x1,x2),及x1*k1+x2*k2=q。
若p不能被q整除,则肯定无解。
否则使k1=k1*p/q,k2=k2*p/q。
则跳k1步x1,跳k2步x2就能达到目标点P。
(符号代表跳的方向)。
令d1=x2/q,d2=x1/q。
则我们可以通过令k1=k1+n*d1,k2:=k2-n*d2使得步数Step=|k1|+|k2|达到最小(其中n为整数)。
1、若Step>k,则无解。
2、若k-Step为偶数,则有解。
可以在k1,k2的基础上再往左跳(k-Step)/2步x1,再往右跳(k-Step)/2步x1。
3、若k-Step为奇数,则:(1)若d1+d2为奇数,则令k1=k1+d1,k2=k2-d2或k1=k1-d1,k2=k2+d2。
具体选择哪种要看哪种的步数Step=|k1|+|k2|最小。
若此时Step<=k,则存在解。
在k1,k2的基础上再往左跳(k-Step)/2步x1,再往右跳(k-Step)/2步x1。
(2)若d1+d2为偶数,则无解。
这道题基于解不定方程,其中涉及到求所有解(x,y)中|x|+|y|的最小值,以及解(x,y)中x+y的奇偶性等。
【总结】解不定方程并不难,只需掌握了辗转相除法的推广算法,一切就迎刃而解了。
一般来说,本文介绍的一般解法在解决解不定方程类问题上是适用的,但还是要遵循这个准则:具体问题具体分析。
【附录】1、S gu106的程序106.pas{$n+}Program Sgu_106;Var k,a,b,c,a1,b1,c1,x,y,z,x1,y1,x2,y2:Extended;Minx,Maxx,Miny,Maxy,Deltax,Deltay:Extended;v:extended;Procedure Init;Beginreadln(a,b,c);readln(x1,x2);readln(y1,y2);if (a=0)and(b=0) thenbeginif c<>0 then writeln(0)elsebeginv:=x2-x1+1;v:=v*(y2-y1+1);writeln(v:0:0);end;halt;endelse if a=0 thenbeginif int(c/b)=c/b thenbegink:=-int(c/b);if (k>=y1)and(k<=y2) then writeln(x2-x1+1:0:0)else writeln(0);endelse writeln(0);halt;endelse if b=0 thenbeginif int(c/a)=c/a thenbegink:=-int(c/a);if (k>=x1)and(k<=x2) then writeln(y2-y1+1:0:0)else writeln(0);endelse writeln(0);halt;end;End;Function Gcd(a,b:Extended):Extended;Var t:Extended;Beginif a/b=int(a/b) thenbeginGcd:=b;x:=0;y:=1;endelsebeginGcd:=Gcd(b,a-int(a/b)*b);t:=y;y:=-int(a/b)*y+x;x:=t;end;End;Procedure Cal(x,Deltax,x1,x2:Extended;Var Minx,Maxx:Extended); Var k:Extended;BeginMinx:=int((x1-x)/Deltax);While x+Minx*Deltax<x1 doif Deltax>0 then Minx:=Minx+1else Minx:=Minx-1;Maxx:=int((x2-x)/Deltax);While x+Maxx*Deltax>x2 doif Deltax>0 then Maxx:=Maxx-1else Maxx:=Maxx+1;if Maxx<Minx thenbegink:=Minx;Minx:=Maxx;Maxx:=k;end;End;Procedure Main;Var k1,k2:Extended;Begina1:=a; b1:=b; c1:=c;c:=-c;if a<0 thenbegina:=-a;b:=-b;c:=-c;end;if b<0 thenbeginb:=-b;c:=-c;end;if a>b then k:=Gcd(a,b)elsebegink:=Gcd(b,a);y:=x;end;c:=c-int(c/a)*a;if c<0 then c:=c+a;if int(c/k)=c/k then y:=int(c/k)*y elsebeginwriteln(0);halt;end;Deltax:=int(b/k);Deltay:=int(a/k);a:=a1; b:=b1; c:=c1;if a*b>0 then Deltay:=-Deltay;x:=int((-b*y-c)/a);Cal(x,Deltax,x1,x2,Minx,Maxx);Cal(y,Deltay,y1,y2,Miny,Maxy);if Minx>Miny then k1:=Minxelse k1:=Miny;if Maxx<Maxy then k2:=Maxxelse k2:=Maxy;if k2-k1+1>0 then writeln(k2-k1+1:0:0)else writeln(0);End;BeginInit;Main;End.2、S gu141的程序141.pasProgram Sgu_141;Var i,j,k,m,n,x,y,x1,y1,p,dx,dy,k1,k2,a,b:longint;Function Gcd(a,b:longint):Longint;Var t:Longint;Beginif a mod b=0 thenbeginGcd:=b;x:=0;y:=1;endelsebeginGcd:=Gcd(b,a mod b);t:=y;y:=-(a div b)*y+x;x:=t;end;End;Beginreadln(a,b,p,n);if a>b then k:=Gcd(a,b)elseBegink:=Gcd(b,a);m:=x;x:=y;y:=m;End;if p/k<>p div k then writeln('NO')elsebeginx:=(p div k)*x;y:=(p div k)*y;dx:=b div k;dy:=a div k;While True dobeginif abs(x+dx)+abs(y-dy)<abs(x)+abs(y) thenbeginx:=x+dx;y:=y-dy;endelse if abs(x-dx)+abs(y+dy)<abs(x)+abs(y) thenbeginx:=x-dx;y:=y+dy;endelse break;end;if abs(x)+abs(y)>n then Writeln('NO')elsebeginif odd(n-abs(x)-abs(y)) thenbeginif Not(odd(dx+dy)) thenbeginwriteln('NO');halt;end;if abs(x+dx)+abs(y-dy)<abs(x-dx)+abs(y+dy) then beginx:=x+dx;y:=y-dy;endelsebeginx:=x-dx;y:=y+dy;end;if abs(x)+abs(y)>n thenbeginwriteln('NO');halt;end;end;writeln('YES');k:=(n-abs(x)-abs(y)) shr 1;if x<0 then write(k,' ',abs(x)+k,' ') else write(abs(x)+k,' ',k,' ');if y<0 then writeln(0,' ',abs(y))else writeln(abs(y),' ',0);end;end;End.。