本文主要是介绍经典算法题02-五家共井,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
问题描述
古代数学巨著《九章算数》中有这么一道题叫
“五家共井,甲二绠(汲水用的井绳)不足,如(接上)乙一绠;乙三绠不足,如丙一绠;丙四绠不足,如丁一绠;丁五绠不足,如戊一绠;戊六绠不足,如甲一绠,皆及。
意思就是说:
五家人共用一口井,甲家的绳子用两条不够,还要再用乙家的绳子一条才能打到井水;乙家的绳子用三条不够,还要再用丙家的绳子一条才能打到井水;丙家的绳子用四条不够,还要再用丁家的绳子一条才能打到井水;丁家的绳子用五条不够,还要再用戊家的绳子一条才能打到井水;戊家的绳子用六条不够,还要再用甲家的绳子一条才能打到井水。最后问:井有多深?每家的绳子各有多长?
分析:
同样这套题也是属于不定方程,拿这个题目的目地就是让大家能够在不定方程组这种范畴问题上做到“举一反三”,根据题意我们再来看看文艺青年的想法,
草稿是:
想法是找a,b,c,d,e中的某个数与h的对应关系。
比如我就找c与h的对应关系,上面的①②③④⑤可写成如下方程组:
b=h-2a ⑥c=h-3b ⑦d=h-4c ⑧e=h-5d ⑨a=h-6e ⑩
将⑥,⑧,⑨,⑩分别代入⑦,一阵痉挛后可知:
c=(148/721)h
上面的公式也就表明了c和h的比例关系,我们令 h=721k,则 c=148k,将其代入⑥,⑦,⑧,⑨,⑩可得如下方程: a=265k
b=191kc=148kd=129ke=76kx=721;k为k>0,所以题目有无数个解。这里我就取 0<k<5,否则绳子已经到达极限了。
编码:
public class myFileDemo2 {public static void main(String[] args) {for (int k = 1; k < 5; k++) {int h = 721 * k;int a = 265 * k;int b = 191 * k;int c = 148 * k;int d = 129 * k;int e = 76 * k;System.out.println("a=" + a + ";b=" + b + ";c=" + c + ";d=" + d + ";e=" + e+";井深h="+h);}}
}
结果如下:
ok。
这篇关于经典算法题02-五家共井的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!