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

丙四绠不足,如丁一绠;丁五绠不足,如戊一绠;戊六绠不足,如甲一绠,皆及。

意思就是说五家人共用一口井,甲家的绳子用两条不够,还要再用乙家的绳子一条才能打到井水;乙家的绳子用三条不够,还要再用丙家的绳子

一条才能打到井水;丙家的绳子用四条不够,还要再用丁家的绳子一条才能打到井水;丁家的绳子用五条不够,还要再用戊家的绳子一条才能打

到井水;戊家的绳子用六条不够,还要再用甲家的绳子一条才能打到井水。

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

算法分析:根据题目可以列的一下方程(len为井深)

len1*2+len2 = len

len2*3+len3 = len

len3*4+len4 = len

len4*5+len5 = len

len5*6+len1 = len

进一步化简

len1=len2+len3/2

len2=len3+len4/3

len3=len4+len5/4

len4=len5+len1/5

从上面算式可以得到len3是2的倍数,len4是3的倍数,len5是4的倍数,len1是5的倍数。

代码实现:

package 练习;

public class WJGJ

{

    static void WJGJ(
int[] len1, int[] len2, int[] len3, int[] len4,
int[] len5, int[] len) // 五家共井算法 { for (len5[0] = 4;; len5[0] += 4)
// len5为4的倍数 for (len1[0] = 5;; len1[0] += 5) // len1为5的倍数 { len4[0] = len5[0] + len1[0] / 5; len3[0] = len4[0] + len5[0] / 4; if (len3[0] % 2 != 0 || len4[0] % 3 != 0) continue; // 如果不能被2整除或若不能被3整除,进行下一次循环 len2[0] = len3[0] + len4[0] / 3; if (len2[0] + len3[0] / 2 < len1[0]) break; // 切回len5[0]循环(因为x太大了) if (len2[0] + len3[0] / 2 == len1[0]) { len[0] = 2 * (len1[0]) + (len2[0]); // 计算井深 return; } } } public static void main(String[] args) { int[] len1 = { 0 }; int[] len2 = { 0 }; int[] len3 = { 0 }; int[] len4 = { 0 }; int[] len5 = { 0 }; int[] len = { 0 }; WJGJ(len1, len2, len3, len4, len5, len); // 求解算法 System.out.printf("五家共井问题求解结果如下:\n"); // 输出结果 System.out.printf("甲家井绳长度为:%d\n", len1[0]); System.out.printf("乙家井绳长度为:%d\n", len2[0]); System.out.printf("丙家井绳长度为:%d\n", len3[0]); System.out.printf("丁家井绳长度为:%d\n", len4[0]); System.out.printf("戌家井绳长度为:%d\n", len5[0]); System.out.printf("井深:%d\n", len[0]); } }

用c也可以实现

代码如下

namespace Test
{
class Program
{
static void Main(string[] args)
{
int a, b, c, d, e, h; a = b = c = d = e = h = ; bool flag = true; while (flag)
{
//4的倍数
e += ; a = ; while (flag)
{
//5的倍数
a += ; d = e + a / ; c = d + e / ; if (c % != )
continue; if (d % != )
continue; b = c + d / ; if (b + c / < a)
break; if (b + c / == a)
flag = false;
}
} h = * a + b; Console.WriteLine("a={0},b={1},c={2},d={3},e={4} ------h={5}\n", a, b, c, d, e, h); Console.Read();
}
}
}

java算法---五家共井的更多相关文章

  1. Java基础 String 裸暴力算法- 五个小练习

      之间的博客,承上启下:    Java基础 String/StringBuff 常用操作方法复习/内存分析 Java数组直接选择排序.sort()排序 Java基础 String 算法 - 五个练 ...

  2. java算法 蓝桥杯 扶老奶奶街

    一共有5个红领巾,编号分别为A.B.C.D.E,老奶奶被他们其中一个扶过了马路. 五个红领巾各自说话: A :我和E都没有扶老奶奶 B :老奶奶是被C和E其中一个扶过大街的 C :老奶奶是被我和D其中 ...

  3. java算法 蓝桥杯 高精度加法

    问题描述 在C/C++语言中,整型所能表示的范围一般为-231到231(大约21亿),即使long long型,一般也只能表示到-263到263.要想计算更加规模的数,就要用软件来扩展了,比如用数组或 ...

  4. java算法 蓝桥杯 格子位置

    问题描述 输入三个自然数N,i,j (1<=i<=N,1<=j<=N),输出在一个N*N格的棋盘中,与格子(i,j)同行.同列.同一对角线的所有格子的位置. 输入格式 输入共三 ...

  5. Java第五次实验

    Java第五次实验--网络编程与安全 任务一: 一.实验要求: 两人一组结对编程: 参考http://www.cnblogs.com/rocedu/p/6766748.html#SECDSA 结对实现 ...

  6. 20165310 Java实验五《网络编程与安全》

    20165310 Java实验五<网络编程与安全> 任务一 题目:①编写MyBC.java实现中缀表达式转后缀表达式的功能:②编写MyDC.java实现从上面功能中获取的表达式中实现后缀表 ...

  7. Java第五次实验报告

    Java第五次实验报告 实验一 实验内容 两人一组结对编程: 参考 结对实现中缀表达式转后缀表达式的功能 MyBC.java 结对实现从上面功能中获取的表达式中实现后缀表达式求值的功能,调用MyDC. ...

  8. 20165324 Java实验五 网络编程与安全

    20165324 Java实验五 网络编程与安全 一.实验报告封面 课程:Java程序设计 班级:1653班 姓名:何春江 学号:20165324 指导教师:娄嘉鹏 实验日期:2018年5月28日 实 ...

  9. java算法 蓝桥杯 文化之旅

    问题描述 有一位使者要游历各国,他每到一个国家,都能学到一种文化,但他不愿意学习任何一种文化超过一次(即如果他学习了某种文化,则他就不能到达其他有这种文化的国家).不同的国家可能有相同的文化.不同文化 ...

随机推荐

  1. 【java】解析JToolBar类的使用

    1.简介 在大部分的Look and Feels下,用户都可以把该工具条拖离原Window组件(除非floatable属性设置为false).为了能够正常的实现拖动效果,该类的实例被建议添加到Bord ...

  2. centos 为OPENJDK配置JAVA_HOME环境变量,安装MAVEN

    1.安装开发者工具包 yum install java--openjdk-devel -y 2.配置环境变量 vim /etc/profile export JAVA_HOME=/usr/lib/jv ...

  3. android开发资源

    android仿微信 http://www.oschina.net/code/snippet_253900_33261

  4. html5 ajax 文件上传

    http://html5demos.com/dnd-upload 看这个例子看了一会儿...这个是支持拖拽的上传. 下面代码是一个简单的ajax的文件上传: function match(url,rs ...

  5. js事件之event.preventDefault()与(www.111cn.net)event.stopPropagation()用法区别

    event.preventDefault()用法介绍 该方法将通知 Web 浏览器不要执行与事件关联的默认动作(如果存在这样的动作).例如,如果 type 属性是 "submit" ...

  6. 使用base64编码的好处

    在项目中,将报文进行压缩.加密后,最后一步必然是使用base64编码,因为base64编码的字符串,更适合不同平台.不同语言的传输: 它不受其他编码的影响,仍然保持不变,这点很有意义,如下验证: St ...

  7. [转]What are mode and status columns under gp_segment_configuration table

    February 16, 2017 10:39 Goal In this article we will try to understand and answer to the below two q ...

  8. 微信小程序如何获取屏幕宽度

    微信小程序如何获取屏幕宽度 方法1: imageLoad: function () { this.setData({ imageWidth: wx.getSystemInfoSync().window ...

  9. macbook安装homebrew并更换清华源

    1.官网brew.sh复制安装脚本. 2.自动安装完成后,更换为清华源来加快速度.网址为:https://mirrors.tuna.tsinghua.edu.cn/help/homebrew 3.更换 ...

  10. Atitit vue.js 把ajax数据 绑定到form表单

    Atitit vue.js 把ajax数据 绑定到form表单 1.1. 使用场景:主要应用在编辑与提交场合..1 1.2. 绑定数据到form控件,可以使用jquery,不过vue.js更加简单1 ...