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 = 0;bool flag = true;while (flag){//4的倍數e += 4;a = 0;while (flag){//5的倍數a += 5;d = e + a / 5;c = d + e / 4;if (c % 2 != 0)continue;if (d % 3 != 0)continue;b = c + d / 3;if (b + c / 2 < a)break;if (b + c / 2 == a)flag = false;}}h = 2 * 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();}}
}

?

轉載于:https://www.cnblogs.com/oumyye/p/4302204.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/375270.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/375270.shtml
英文地址,請注明出處:http://en.pswp.cn/news/375270.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

看雪逆向學習導航

---------------------------------------------------------------------------- 工具教程: OllyDbg IDA Windbg GDB 基本方法 參考資料 逆向原理 ----------------------------------------------------------------------------

viewController的生命周期

一、結構 按結構可以對iOS的所有ViewController分成兩類&#xff1a; 1、主要用于展示內容的ViewController&#xff0c;這種ViewController主要用于為用戶展示內容&#xff0c;并與用戶交互&#xff0c;如UITableViewController&#xff0c;UIViewController。 2、用于控制和顯…

android123 zhihuibeijing 新聞中心-新聞 頁簽 ViewPagerIndicator實現

## ViewPagerIndicator ## 使用導入ViewPagerIndicator庫的方式相當于可以改源碼&#xff0c;打包編譯Eclips可以自動完成。ViewPager指針項目&#xff0c;在使用ViewPager的時候能夠指示ViewPager所在的位置&#xff0c;就像Google Play中切換的效果一樣&#xff0c;還能使用…

java 獲取隨機數字的三種方法

1 //方法1 (數據類型)2 //(最小值Math.random()*(最大值-最小值1))3 // 例:4 (int)(1Math.random()*(10-11)) //從1到10的int型隨數5 6 方法2 獲得隨機數7 for (int i0;i<30;i)8 {9 System.out.println((int)(1Math.random()*10)); 10 } 11 (int)(1Math.random()*10) 1…

LVS原理及實踐(NAT模式)

LVS無論NAT及DR模式&#xff0c;均要求LVS server和real server在同一個網段內&#xff0c;NAT需要把lvs server當作各個realserver的默認網關&#xff0c;DR模式采用修改mac地址直接從數據鏈路層轉發、要求必須在同一個物理網段內 LVS-NAT的實驗網絡拓撲&#xff1a; 采用青…

基于Maven的spring_security入門

配置文件的修改點沒什么變化&#xff0c;可以參考&#xff1a;http://blog.csdn.net/ouitiken/article/details/8830505 pom.xml的依賴參考&#xff1a; <dependencies><!-- Commons --><dependency><groupId>commons-dbcp</groupId><artifac…

使用Vitamio打造自己的Android萬能播放器(5)——在線播放(播放優酷視頻)

前言 為了保證每周一篇的進度&#xff0c;又由于Vitamio新版本沒有發布&#xff0c; 決定推遲本地播放的一些功能&#xff08;截圖、視頻時間、尺寸等&#xff09;&#xff0c;跳過直接寫在線播放部分的章節。從Vitamio的介紹可以看得出&#xff0c;其支持http、m3u8等多種網絡…

20個新鮮出爐的網站模板【HTML PSD】

這里給大家分享20 個新鮮出爐的免費網站模板。這些設計元素將成為你下一個項目的重要素材&#xff0c;可以幫你節省很多的時間。與往常一樣&#xff0c;我們經常漫游網絡&#xff0c;尋找最好的資源&#xff0c; HTML、CSS 和 PSD 等等&#xff0c;記得關注啊。 您可能感興趣的…

位運算總結(百科)

位運算 程序中的所有數在計算機內存中都是以二進制的形式儲存的。位運算就是直接對整數在內存中的二進制位進行操作。 位運算 - 定義 在很多系統程序中常要求在位(bit)一級進行運算或處理。&#xff23;語言提供了位運算的功能&#xff0c; 這使得&#xff23;語言也能像匯編語…

歸檔(轉)

如果是自定義類型的歸檔和解檔&#xff0c;是按以下步驟實現如果不是自定義類型&#xff0c;直接第四步就可以。一、創建一個類User二、在User.h中遵循NSCoding協議 #import <Foundation/Foundation.h> interface User : NSObject<NSCoding> { int _userAge;//例子…

相遇

CPU直接識別的唯一語言是機器語言,為了克服機器語言的缺點,便將機器指令用便于記憶、并能描述指令功能的符號來表示稱為指令助記符簡稱助記符 匯編語言由匯編指令,偽指令,和其它符號組成 匯編指令:機器碼的助記符,有對應的機器碼 偽指令:沒有對應的機器碼由編譯器執行 其它符號…

相識

編譯器&#xff1a;MASM 調試程序&#xff1a;DEBUG 編輯器&#xff1a;EditPlus

MySQL show命令的用法

show tables或show tables from database_name; // 顯示當前數據庫中所有表的名稱show databases; // 顯示mysql中所有數據庫的名稱show columns from table_name from database_name; 或show columns from database_name.table_name; // 顯示表中列名稱show grants for user_n…

怎么用代碼制作WordPress的歸檔頁面

先看看效果&#xff0c;這個是我網站的歸檔頁面&#xff1a;http://www.shenjieblog.com/archives 其實WordPress自帶了一個歸檔的功能&#xff0c;但是只能顯示在網頁中的某一個部分&#xff0c;但是我想單獨制作一個歸檔頁面&#xff0c;因為看見很多網站都有這個&#xff0c…

【web必知必會】—— 使用DOM完成屬性填充

本文介紹了使用DOM的簡單方法實現動態加載圖片的功能。 前文介紹了&#xff1a; 1 DOM四個常用的方法 首先看一下效果&#xff0c;初始時是一個相冊&#xff0c;可以點擊導航&#xff0c;切換圖片&#xff0c;并切換下方顯示內容&#xff1a; 點擊house&#xff0c;可以動態的切…

地址總線 數據總線

地址總線&#xff1a; CPU地址總線的寬度決定了它能尋址多少個內存單元地址,一個CPU有N根地址總線那么它的尋址能力為2^N次方。8086CPU地址總線寬度為20可尋址2^20次方個內存單元地址大小為1M。80386地址總線寬度為32可尋址內存為4GB 數據總線&#xff1a; CPU與存儲器之間的數…

Spring事務配置方式(一) 攔截器方式配置

一、使用<tx:advice>和<aop:config>配置事務 <!-- 配置事務管理器 --><bean id"transactionManager" class"org.springframework.jdbc.datasource.DataSourceTransactionManager"><property name"dataSource" ref&qu…

8086寄存器組

寄存器(14個)|AX,BX,CX,DX,SP,BP,SI,DI,IP,FLAG,CS,DS,SS,ES| >通用寄存器 數據寄存器(存放一般數據)AX (AH,AL) | BX (BH,BL) | CX (CH,CL) | DX (DH,DL) 指針寄存器 堆棧指針 基址指針SP BP (SS:SP) 變址寄存器 源地址 目的地址SI …

學習動態性能表(10)--v$session_longops

學習動態性能表 第十篇--V$SESSION_LONGOPS 2007.6.7 本視圖顯示運行超過6秒的操作的狀態。包括備份&#xff0c;恢復&#xff0c;統計信息收集&#xff0c;查詢等等。 要監控查詢執行進展狀況&#xff0c;你必須使用cost-based優化方式&#xff0c;并且&#xff1a; 設置TIME…