【備考06組01號】第四屆藍橋杯JAVA組A組國賽題解
1.填算式
(1)題目描述 請看下面的算式: (ABCD - EFGH) * XY = 900 每個字母代表一個0~9的數字,不同字母代表不同數字,首位不能為0。 比如,(5012 - 4987) * 36 就是一個解。 請找到另一個解,並提交該解中 ABCD 所代表的整數。 請嚴格按照格式,通過瀏覽器提交答案。 (2)涉及知識點:dfs全排列+簡單計算 (4)程式碼: 點選檢視程式碼
|
2.骰子迷題
(1)題目描述 小明參加了少年宮的一項趣味活動:每個小朋友發給一個空白的骰子(它的6個面是空白的,沒有數字),要小朋友自己設計每個面寫哪個數字。但有如下要求: 1. 每個面只能填寫 0 至 8 中的某一個數字。 2. 不同面可以填寫同樣的數字,但6個面總和必須等於24。 填好後,小朋友可以用自己填寫好數字的骰子向少年宮的兩個機器人挑戰----玩擲骰子游戲。規則如下: 三方同時擲出自己的骰子,如果出現任何相同的數字,則三方都不計分。 0 0 0 8 8 8 請你替小明算一下,他如何填寫,才能使自己得分的概率最大。 請提交小明應該填寫的6個數字,按升序排列,數字間用一個空格分開。 如果認為有多個答案,提交字母序最小的那個方案。 請嚴格按照格式,通過瀏覽器提交答案。 (2)涉及知識點:dfs+概率運算 (3)分析與解答:這道題我在網上看到有剪枝,其實這道題沒有必要,因為資料量很小,即使是六層迴圈列舉所有情況也非常小,所以直接搜尋就可以了,6層迴圈我還沒有試過,考場上沒方法的時候不妨嘗試一下,反正不會超時。這道題的思路是什麼呢,其實很簡單,首先列舉,然後只要符合條件的再把比兩個機器人數字都大的情況比較出來最後再相乘就可以了,這裡其實兩個數字應該是要分別除以6的,但是因為不需要求最大的概率結果,所以不需要給自己增加難度。 (4)程式碼: 點選檢視程式碼
|
3.埃及分數
(1)題目描述 古埃及曾經創造出燦爛的人類文明,他們的分數表示卻很令人不解。古埃及喜歡把一個分數分解為類似: 1/a + 1/b 的格式。 (2)涉及知識點:雙精度運算+暴力列舉 (3)分析與解答:這道題乍看之下非常簡單,但是國賽遇到這種題目千萬長個心眼,後面可能暗藏著什麼陷阱,其實你想想看也知道,國賽A組第三題,怎麼可能出這種初學者都會做的題目,這道題目出得非常刁鑽。刁鑽在哪裡,一開始我用的是(double)1/i+(double)1/j==(double)2/45,為了保險我還特地測了一下2/15的答案,結果2/15的答案還湊巧是對的,但是這道題目結果換成2/45就是錯的,其實具體原因我也說不清楚,我唯一的理解就是double只有14位小數,運算算不到那麼精準吧,當然我也不會誤差排除,所以這裡換個方法。怎麼辦呢?其實除是不精確的,但是乘法是一定精確的,所以在個人建議能用乘法儘量不要用除法,所以這裡要做的是同分,轉換成乘法45*j+45*i=2*i*j,其實這樣double型別都不需要了,int型就可以了。 (4)程式碼: 點選檢視程式碼
|
4.約數倍數選卡片
(1)題目描述 閒暇時,福爾摩斯和華生玩一個遊戲: (2)涉及知識點:博弈論+dfs (3)分析與解答:博弈論的題目我不太會做,畢竟沒系統學過,只能借人家的程式碼來講講思路了,這道題的博弈論思路大概是這樣,我們回過頭來看看輸入,輸入資料為2行。第一行是若干空格分開的整數(每個整數介於1~100間),表示當前剩餘的所有卡片。第二行也是若干空格分開的整數,表示可以選的數字。當然,第二行的數字必須完全包含在第一行的數字中。 程式則輸出必勝的招法!! (4)程式碼: 點選檢視程式碼
|
5.網路尋路
(1)題目描述 X 國的一個網路使用若干條線路連線若干個節點。節點間的通訊是雙向的。某重要資料包,為了安全起見,必須恰好被轉發兩次到達目的地。該包可能在任意一個節點產生,我們需要知道該網路中一共有多少種不同的轉發路徑。 (2)涉及知識點:無向圖構建+dfs (3)分析與解答:今年的題目是搜尋專題吧,我估計是第四屆出題還不熟練,總共6道題4道題考DFS,1道題考雙精度運算,1道題考數論,可見DFS在藍橋杯國賽中還是很重要的,所以必須要熟練掌握才行。這道題其實比上一道題思路簡單,只要構建好無向圖,對每個點搜尋一下就行了,而且這道題目最簡單的就是路線是固定死的,只能是兩次,那麼走三步就可以了,中間不能經過走過的點,也不能回到起點再來一次,那麼用訪問標記陣列就行了,加上沒有重邊和自環還是很簡單的。 (4)程式碼:
|
6.公式求值
(1)題目描述 輸入n, m, k,輸出圖1所示的公式的值。其中C_n^m是組合數,表示在n個人的集合中選出m個人組成一個集合的方案數。組合數的計算公式如圖2所示。
(3)分析與解答:這道題我一時半會兒看不懂,畢竟數論沒怎麼學,附上大佬程式碼(90%的通過率) https://blog.csdn.net/u010836847/article/details/21166725?utm_source=copy (4)程式碼: 點選檢視程式碼
|