zoukankan      html  css  js  c++  java
  • 五家共井(第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。

    源码示例

     

    结果展示

    小结

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

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

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

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

  • 相关阅读:
    nginx负载均衡代理配置脚本
    想查看下编译安装的nginx默认都带有哪些模块
    docker安装mysql8.0.18
    Reached target Basic System
    layer iframe的一些操作记录:
    微信JSAPI支付
    用go和python实现在图片里藏图片
    go反射优化
    go图片灰度化
    golang 创建发送邮件服务
  • 原文地址:https://www.cnblogs.com/kangjianwei101/p/5334672.html
Copyright © 2011-2022 走看看