資源簡介 智能算法挑戰復賽 學組(總共 4 道題)1. 撿 頭【題 描述】 強在河邊撿了 2 塊漂亮的 頭,他想再撿兩塊 頭,讓這 4 塊 頭的質量正好 為 30 ,并塊 頭的質量之間的數字,請編程 輸出第 3 塊和第 4 塊 頭的質量。注:每個 頭的重量都輸出 0 0。【輸 格式】輸 2 個數,數與數之間以空格間隔,表示 2 塊 頭的質量。【輸出格式】輸出表示第 3、4 塊 頭的質量的所有可能結果,每塊 頭質量的數字 空格隔 開。多組結分 輸出。【樣例輸 】(測試數據不包含本樣例)1 11【樣例輸出】8 109 9答案解析:我們可以使 兩層循環來解決撿 頭的問題。外層循環遍歷第三塊 頭的質量,內層循環遍下條件:新撿的兩塊 頭的質量要介于前兩塊 頭的質量之間。四塊 頭的質量之和等于30。def find_stones_weight(m1, m2):results = [] # 保存所有可能的結果for m3 in range(m1 + 1, m2):for m4 in range(m3, m2 + 1):if m1 + m2 + m3 + m4 == 30:results.append((m3, m4))return results# 輸 已有的兩塊 頭的質量m1, m2 = map(int, input().split())# 查找可能的新 頭質量并輸出結果possible_weights = find_stones_weight(m1, m2)for weight in possible_weights:print(weight[0], weight[1])在這個示例中,我們定義了 個 find_stones_weight 函數來查找可能的新 頭的質量。頭和第四塊 頭的質量。如果滿 條件,將它們存儲在 results 列表中。在主程序中,我們輸 已有的兩塊 頭的質量。然后,調 find_stones_weight 函數查出。請注意,以上示例代碼是使 Python 編寫的。如果您希望在其他編程語 中實現相同的功2. 判斷數字出現了 次【題 描述】給定 個正整數n,判斷從 1 到這個數本身的所有數中, 共出現了多少次數字 k。【輸 格式】輸 共 1 ,包括 個正整數 n 和 個正整數 k。(0輸出共 1 , 個整數,表示 1 到 n 之間的所有數 (包括n), 共出現了 次k。 【樣例輸13 3【樣例輸出】2答案解析:def count_occurrences(n, k):count = 0for num in range(1, n + 1):# 將數字轉換為字符串,以便進 字符 較num_str = str(num)# 統計數字 k 在當前數字中出現的次數digit_count = num_str.count(str(k))# 累加出現次數count += digit_countreturn count# 輸 正整數 n 和 kn, k = map(int, input().split())# 計算從 1 到 n 之間 共出現了 次數字 koccurrences = count_occurrences(n, k)print(occurrences)在這個示例中,我們定義了 個 count_occurrences 函數來計算從 1 到 n 之間 共出現了 次數字數字,在每個數字中統計數字 k 出現的次數,并累加到 count 變量中。在主程序中,我們輸 正整數 n 和 k,并調 count_occurrences 函數來計算結果,并將其輸出。請注意,以上示例代碼是使 Python 編寫的。如果您希望在其他編程語 中實現相同的功能,請根據3. 滑雪板打包問題【題 描述】 家新開業的滑雪場,需要采購不同規格的滑雪板,每個滑雪板的 度是不固定 的,現在需要把排列好每次快遞的總重 量是有限制的,不能超過重量 G。只要每次打包的重量不超過 G,多個滑雪板可以摞個 板進 固定。假設,給出排列好的 每個滑雪板的重量 Gi ,和 度 Li ,請計算需要最少多 的 板【輸 格式】輸 的第 有兩個數字, 個是滑雪板的個數, 個是包裹總重量。 以下滑雪板個數 ,每 的第 【輸出格式】輸出需要最少的 板的總 度。注:每次打包需要 2 個 板。【樣例輸 】(測試數據不包含本樣例)5 52 11 21 32 32 2【樣例輸出】10代碼解析:def calculate_minimum_length(num_boards, max_weight, boards):# 按照滑雪板的 度從 到 排序sorted_boards = sorted(boards, key=lambda x: x[1], reverse=True)total_length = 0 # 總 板 度current_weight = 0 # 當前打包的重量for i in range(num_boards):weight = sorted_boards[i][0]length = sorted_boards[i][1]# 如果當前打包的重量超過最 限制,需要新的 板進 打包if current_weight + weight > max_weight:total_length += length * 2current_weight = weightelse:current_weight += weight# 加上最后 次打包的 板 度total_length += sorted_boards[-1][1] * 2return total_length# 輸 滑雪板的個數和包裹總重量num_boards, max_weight = map(int, input().split())boards = []for _ in range(num_boards):weight, length = map(int, input().split())boards.append((weight, length))# 計算需要最少的 板的總 度并輸出結果minimum_length = calculate_minimum_length(num_boards, max_weight, boards)print(minimum_length)在這個示例中,我們定義了 個 calculate_minimum_length 函數來計算需要最少的 板的總 度 排序。然后,我們遍歷每個滑雪板,并根據當前打包的重量判斷是否需要新的 板進 打包。如果超過最 限上,并更新當前打包的重量。如果沒有超過最 限制,我們只需要更新當前打包的重量。最后,我們加上最后 次打包的 板 度,并輸出結果作為最少的 板總 度。請注意,以上示例代碼是使 Python 編寫的。如果您希望在其他編程語 中實現相同的功能,請根據4. 統計考試成績【題 描述】期末考試結束了, 師要統計班 學 的考試成績分布,已知每個同學的考試 成績為在 0 到 100 分之成績,計算出在 平均成績 (成績平均值向下取整) 之上的 ( 于等于平均成績) 和在平均成績之下 的 ( 【輸 格式】第 n 為學 成績個數,0第 ,由空格隔開的每個同學的成績,為 1 到 100 間的整數。 【輸出格式】兩個整數,由空格隔開,為平均分以上 數和平均分以下 數。 【樣例輸 】(測試數據不包含本樣例12100 80 93 66 73 50 96 100 84 47 97 71【樣例輸出】答案解析:要解決這個問題,我們可以按照以下步驟進 :1. 先,獲取學 成績的個數 n。2. 然后,輸 每個同學的成績,并計算總分。3. 計算平均分(向下取整)。4. 遍歷每個同學的成績,統計平均分以上和平均分以下的 數。5. 輸出平均分以上和平均分以下的 數。下 是 個解決該問題的 Python 代碼示例:import math# 輸 學 成績個數n = int(input())# 輸 每個同學的成績,并計算總分scores = list(map(int, input().split()))total_score = sum(scores)# 計算平均分(向下取整)average_score = math.floor(total_score / n)# 統計平均分以上和平均分以下的 數above_average_count = 0below_average_count = 0for score in scores:if score >= average_score:above_average_count += 1else:below_average_count += 1# 輸出平均分以上和平均分以下的 數print(above_average_count, below_average_count)在這個示例中,我們 先輸 學 成績的個數 n,并將每個同學的成績存儲在列表 scores 中。然后,接下來,我們計算平均分(向下取整),使 math.floor 函數來實現向下取整。然后,我們遍歷每個同學的成績,統計平均分以上和平均分以下的 數,并將結果存儲在變量 above_average_count 和 below_average_count 中。最后,我們輸出平均分以上和平均分以下的 數。請注意,以上示例代碼是使 Python 編寫的。如果您希望在其他編程語 中實現相同的功能,請根據 展開更多...... 收起↑ 資源預覽 縮略圖、資源來源于二一教育資源庫