版权声明:本文为博主原创文章,未经博主允许,不得转载。

五家共井(第1届第3题)

题目要求

       问题描述

       古代数学巨著《九章算数》中有这么一道题叫“五家共井,甲二绠(汲水用的井绳)不足,如(接上)乙一绠;乙三绠不足,如丙一绠;丙四绠不足,如丁一绠;丁五绠不足,如戊一绠;戊六绠不足,如甲一绠,皆及。

       翻译成白话意思就是:五家人共用一口井,甲家的绳子用两条不够,还要再用乙家的绳子一条才能打到井水;乙家的绳子用三条不够,还要再用丙家的绳子一条才能打到井水;丙家的绳子用四条不够,还要再用丁家的绳子一条才能打到井水;丁家的绳子用五条不够,还要再用戊家的绳子一条才能打到井水;戊家的绳子用六条不够,还要再用甲家的绳子一条才能打到井水。

       最后问:井有多深?每家的绳子各有多长?

       样例输入:无

       样例输出:各家绳长以及井深。

解决方案

       翻译成白话后,此题秒懂。

       设甲乙丙丁戊各家绳长分别为a,b,c,d,e,井深为h,则:

2a + b = h   ①

3b + c = h   ②

4c + d = h   ③

5d + e = h   ④

6e + a = h   ⑤

       观察此方程组,5个等式,6个未知数,那么如果方程一定有多组解,即解不唯一。

       整理上述方程组可得:

a=(265/721)h

b=(191/721)h

c=(148/721)h

d=(129/721)h

e=(76/721)h

       以此为切入点,我们这里假设绳长、井深均为正整数且井深不会超过一万米,且那么井深可能的最小取值为721,此时a、b、c、d、e大小分别为265、191、148、129、76。

源码示例

 

结果展示

小结

       这个题看似简单,实际也很简单,稍加换算便可得出需要的结果,但是如果需求变了呢?换成上百个人错综复杂的关系,再去手动解是不是得累死?如果用循环死磕,那么电脑会累死。如果先化简一部分再交给电脑处理,又不知道化简到什么地步让电脑处理最合适...

       有没有一种通用的解法来解这种题?换句话说用没有通用的算法来解多元一次方程组?有的,利用矩阵!

       线性代数里学过用矩阵的初等变换解多元一次方程组(高斯消元法),所以只需要编一些针对矩阵初等变换的函数,以后遇到这种题就可以直接输入系数求解了。

       这个算法好不好编?其实也不难,无非就是循环加判断,有时间不妨一试!

posted @ 2016-03-29 21:20  康建伟  阅读(1474)  评论(0编辑  收藏  举报

版权声明:本文为博主原创文章,未经博主允许,不得转载。