java算法---五家共井
古代数学巨著《九章算数》中有这么一道题叫“五家共井,甲二绠(汲水用的井绳)不足,如(接上)乙一绠;乙三绠不足,如丙一绠;
丙四绠不足,如丁一绠;丁五绠不足,如戊一绠;戊六绠不足,如甲一绠,皆及。
意思就是说五家人共用一口井,甲家的绳子用两条不够,还要再用乙家的绳子一条才能打到井水;乙家的绳子用三条不够,还要再用丙家的绳子
一条才能打到井水;丙家的绳子用四条不够,还要再用丁家的绳子一条才能打到井水;丁家的绳子用五条不够,还要再用戊家的绳子一条才能打
到井水;戊家的绳子用六条不够,还要再用甲家的绳子一条才能打到井水。
最后问:井有多深?每家的绳子各有多长?
算法分析:根据题目可以列的一下方程(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算法---五家共井的更多相关文章
- Java基础 String 裸暴力算法- 五个小练习
之间的博客,承上启下: Java基础 String/StringBuff 常用操作方法复习/内存分析 Java数组直接选择排序.sort()排序 Java基础 String 算法 - 五个练 ...
- java算法 蓝桥杯 扶老奶奶街
一共有5个红领巾,编号分别为A.B.C.D.E,老奶奶被他们其中一个扶过了马路. 五个红领巾各自说话: A :我和E都没有扶老奶奶 B :老奶奶是被C和E其中一个扶过大街的 C :老奶奶是被我和D其中 ...
- java算法 蓝桥杯 高精度加法
问题描述 在C/C++语言中,整型所能表示的范围一般为-231到231(大约21亿),即使long long型,一般也只能表示到-263到263.要想计算更加规模的数,就要用软件来扩展了,比如用数组或 ...
- java算法 蓝桥杯 格子位置
问题描述 输入三个自然数N,i,j (1<=i<=N,1<=j<=N),输出在一个N*N格的棋盘中,与格子(i,j)同行.同列.同一对角线的所有格子的位置. 输入格式 输入共三 ...
- Java第五次实验
Java第五次实验--网络编程与安全 任务一: 一.实验要求: 两人一组结对编程: 参考http://www.cnblogs.com/rocedu/p/6766748.html#SECDSA 结对实现 ...
- 20165310 Java实验五《网络编程与安全》
20165310 Java实验五<网络编程与安全> 任务一 题目:①编写MyBC.java实现中缀表达式转后缀表达式的功能:②编写MyDC.java实现从上面功能中获取的表达式中实现后缀表 ...
- Java第五次实验报告
Java第五次实验报告 实验一 实验内容 两人一组结对编程: 参考 结对实现中缀表达式转后缀表达式的功能 MyBC.java 结对实现从上面功能中获取的表达式中实现后缀表达式求值的功能,调用MyDC. ...
- 20165324 Java实验五 网络编程与安全
20165324 Java实验五 网络编程与安全 一.实验报告封面 课程:Java程序设计 班级:1653班 姓名:何春江 学号:20165324 指导教师:娄嘉鹏 实验日期:2018年5月28日 实 ...
- java算法 蓝桥杯 文化之旅
问题描述 有一位使者要游历各国,他每到一个国家,都能学到一种文化,但他不愿意学习任何一种文化超过一次(即如果他学习了某种文化,则他就不能到达其他有这种文化的国家).不同的国家可能有相同的文化.不同文化 ...
随机推荐
- 【JQuery】事件冒泡及使用jQuery阻止
(1)什么是事件起泡 首先你要明白一点,当一个事件发生的时候,该事件总是有一个事件源,即引发这个事件的对象,一个事件不能凭空产生,这就是事件的发生. 当事件发生后,这个事件就要开始传播.为什么要传播呢 ...
- 使用Nexus搭建Maven服务器详细配置【转】
为什么要搭建nexus私服,原因很简单,有些公司都不提供外网给项目组人员,因此就不能使用maven访问远程的仓库地址,所以很有必要在局域网里找一台有外网权限的机器,搭建nexus私服,然后开发人员连到 ...
- CSS3选择器之学习笔记
首先说first-child与last-child,这两个选择器很容易明白,就是父元素下的第一个子元素和最后一个子元素.而nth-child和nth-last-child则是父元素下指定序号的子元素, ...
- android数据存取的四种方式
Android系统下有四种数据的存在形式,分别是SQLite,SharePreference,File,ContentProvider.一:特性介绍:SQLite:对于大多数开发者而言,这应该是大家非 ...
- 转 kafka 清理数据
由于项目原因,最近经常碰到Kafka消息队列拥堵的情况.碰到这种情况为了不影响在线系统的正常使用,需要大家手动的清理Kafka Log.但是清理Kafka Log又不能单纯的去删除中间环节产生的日志, ...
- 颠覆Git 命令使用体验的神器 - tig
颠覆 Git 命令使用体验的神器 -- tig tig, 就是把 Git 这个单词倒过来念, 它是一个命令行工具, 日常使用中我用它来取代 Git 最高频的几个操作, 如 git log, g ...
- AWS & ASP.NET
https://dotnetcodr.com/amazon-cloud/ Amazon cloud Big Data overall architecture Architecture of a Bi ...
- 分布式服务管理框架-Zookeeper节点ACL
文章转自:http://blog.csdn.net/xyang81/article/details/53147894 概述 ACL全称为Access Control List(访问控制列表),用于控制 ...
- MySql(十四):MySql架构设计——可扩展性设计之数据切分
一.前言 通过 MySQL Replication 功能所实现的扩展总是会受到数据库大小的限制,一旦数据库过于庞大,尤其是当写入过于频繁,很难由一台主机支撑的时候,我们还是会面临到扩展瓶颈.这时候,我 ...
- linux杀掉tomcat应用进程。停止tomcat应用
ps -ef |grep tomcat |grep -v grep |awk '{print $2}' |xrags kill -9