小明有一些矩形的材料,他要從這些矩形材料中切割出一些正方形。 當他面對一塊矩形材料時,他總是從中間切割一刀,切出一塊最大的正方 形,剩下一塊矩形,然後再切割剩下的矩形材料,直到全部切爲正方形爲止。 例如,對於一塊兩邊分別爲5 和3 的材料(記爲5 X 3),小明會依次切出 3 X 3、2X 2、1 X 1、1 X 1 共4 個正方形。 現在小明有一塊矩形的材料,兩邊長分別是2019 和324。請問小明最終會 切出多少個正方形?
一句話。歐幾里得算法,在迭代相除的倍數,就是切割出去的正方形 你應該會和我一樣懵逼,什麼是歐幾里得算法,具體請百度。 說白了就是,一個axb 的矩形不斷的切除掉 min{a,b}*min{a,b}個矩形。切到 長或寬中有一個小於min{a,b}, 理解不了就畫圖試驗一下。 在此之後,就不能繼續切邊長爲min{a,b}的矩形了。 剩下的情況可能是a,a%b,或b,b%a的情況,這主要取決於 誰小。 這樣子切割下去,直到切割到1或 一條邊是另外一條邊的倍數的情況,如果成倍數,就直接a/b 便是能切出來的個數。 不成倍數,則切的是最小邊。 根據取模運算的規則,我們可以知道 如果a比b小,那麼遞歸進入下一次 實際上是交換了 a,b的位置。 因爲a%b=a,b放 在了a,這個時候直接用除法得到是0,所以不會造成干擾
public class 矩陣分割 { static int count=0; public static void main(String[] args) { int n =2019;int m =324; gcd(n,m); System.out.println(count); } public static int gcd(int n ,int m) { if(m!=0)count+=n/m; return m==0? n:gcd(m,n%m); } }
一種Playfair密碼變種加密方法如下:首先選擇一個密鑰單詞(稱爲pair)(字母不重複,且都爲小寫字母),然後與字母表中其他字母一起填入至一個5x5的方陣中,填入方法如下: 1.首先按行填入密鑰串。 2.緊接其後,按字
線段樹是什麼東西 一句話定義 很簡單,線段樹這東西就是爲了節省在修改數組後,爲了簡便的獲得區間值。 如數組 int [] List={1,2,3,4}; 很顯然 ,正常人的思維是 要獲取那一段的值,就把這一段加起來 如 要獲取區
package s3; public class test6 { private static int q=0; public st
package s3; public class test5 { /* 標題:寫日誌 寫日誌是程序的常見任務。現在要
package s3; import java.util.Scanner; public class test10 { /* 標題:矩陣翻硬幣
package s3; import java.util.Scanner; public class test8 { /* * 標
題面: 思路: 由於存在刪邊操作,正着來處理可能不太好寫,但正難則反,我們可以反向來思考這個問題,我們可以按天數從大到小排序,那麼刪邊操作 import java.io.OutputStream; import java.io.IOE
第八屆藍橋杯題型簡介: 6個填空題,直接輸出結果即可,無需其他輸入輸出 否則算錯,只有滿分和0分之分 4個編程題,需要輸入測試數據,根據通過的樣例數來評分 填空題: 1.購物單 這個題是真的暴力,那麼多數據一個個輸入就麻煩了,還可
[藍橋杯][2013年第四屆真題]幸運數 時間限制: 1Sec 內存限制: 128MB 提交: 836 解決: 384 題目描述 幸運數是波蘭數學家烏拉姆命名的。它採用與生