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算法 蓝桥杯 文化之旅
问题描述 有一位使者要游历各国,他每到一个国家,都能学到一种文化,但他不愿意学习任何一种文化超过一次(即如果他学习了某种文化,则他就不能到达其他有这种文化的国家).不同的国家可能有相同的文化.不同文化 ...
随机推荐
- PWA 入门: 写个非常简单的 PWA 页面
Progressive Web Apps 是 Google 提出的用前沿的 Web 技术为网页提供 App 般使用体验的一系列方案. 这篇文章里我们来完成一个非常简单的 PWA 页面. 一个 PWA ...
- python练习笔记——面试题 F(n) = F(n-1)+F(n-2)
已知:F(0) = 0, F(1) = 1, F(n) = F(n-1) + F(n-2) 其中(n≥2,n∈N*) 求:求10以内的函数值分别是多少 方法一: def F(n): if n < ...
- ss 命令
ss命令用来显示处于活动状态的套接字信息.ss命令可以用来获取socket统计信息,它可以显示和netstat类似的内容.但ss的优势在于它能够显示更多更详细的有关TCP和连接状态的信息,而且比net ...
- springmvc 自定义注解
1. 自定义一个注解 @Documented //文档生成时,该注解将被包含在javadoc中,可去掉 @Target(ElementType.METHOD)//目标是方法 @Retention(Re ...
- Linux中SFTP命令
sftp和ftp是两种协议是不同的,sftp是ssh内含的协议,只要sshd服务器启动了,它就可用,它本身不需要ftp服务器启动. 1.常用登陆方式: 格式:sftp <user>@< ...
- Android Developers:绘制9-patch图片
绘制9-patch图片工具让你使用可见即可得(WYSIWYG)编辑器轻松创建Nine Patch图像. 关于介绍Nine-path图片和它是如何工作的,请在2D Graphics的文档中查阅关于Nin ...
- unity, ugui toggle, dynamic bool
假设Canvas_debugControl.cs有一个函数 public void showNextSceneButton(bool value){ ... } 欲将其添加到一个ugui toggle ...
- centos 7 执行 groupinstall报错
报错显示Error: Package: systemtap-devel-3.10-10.el7.armv7hl (base) Requires: kernel-devel 解决方案 wget http ...
- OAuth 2.0介绍
简介 OAuth是一个关于授权(authorization)的开放网络标准,在全世界得到广泛应用,目前的版本是2.0版. 一.应用场景 为了理解OAuth的适用场合,让我举一个假设的例子. 有一个&q ...
- 【android开发】如何在Linux平台下安装JDK环境
原文:http://android.eoe.cn/topic/android_sdk Linux平台JDK安装 本文主要描述如何在Linux平台下安装JDK环境.进入网页:http://www.ora ...