我嘗試在 Google Kickstart 上解決練習題,但我想出的解決方案似乎是錯誤的 [老實說,我不知道/不明白為什么]。這個問題基本上要求我們回傳給 m 個孩子分享 n 個糖果后剩余的糖果數量。所有孩子都應該擁有相同數量的糖果,并且每個孩子都必須盡可能多地獲得糖果。
示例( 思考程序): 給定 5 袋糖果和 2 個孩子,我們總共有 25 顆糖果,每袋包含 5 顆糖果(即5 5 5 5 5)。以這樣一種方式分享所有的糖果,即每個孩子收到最多數量的糖果,所有孩子收到相同數量的糖果。我們開始輪流一次一個孩子分享糖果。到兩個孩子每人收到 12 顆糖果時,我們就只剩下 1 顆糖果了。因為我們不能把一顆糖果分成兩半,所以我們回傳 1 作為余數。
輸入采用以下格式:
輸入的第一行給出了測驗用例的數量,T.T測驗用例緊隨其后。
每個測驗用例由兩行組成。每個測驗用例的第一行包含兩個整數:整數N,糖果袋的數量和M,孩子的數量。
下一行包含 N 個非負整數C[0],C[1],…,C[N]表示陣列C,其中第i 個整數表示第i 個袋子中的糖果數量。
這是一個例子;有2個測驗用例:
2
7 3
1 2 3 4 5 6 7
5 10
7 7 7 7 7
在第一個測驗用例中, 有7袋糖果和3 個孩子分享糖果。糖果袋1有1個糖果,糖果袋2有2個糖果,糖果袋3有3個糖果,糖果袋4有4個糖果,糖果袋5有5個糖果,糖果袋6有6個糖果,糖果袋7有7個糖果。
在第二個測驗用例中,有5 個糖果和10 個孩子分享糖果。所有 5 個糖果袋每個都有 7 個糖果。
輸出應為以下格式:
Case #1: 1
Case #2: 5
解釋/思考程序:
在第一個測驗用例中,總共有 28 個糖果。我們必須在 3 個孩子之間平均分享所有 28 個,并回傳剩下的作為答案。我們可以開始分享糖果,我們發現在所有孩子都收到 9 顆糖果后,我們只剩下 1 顆糖果,我們不能分享/打破/將糖果切成 3 個相等 (1/3) 的糖果,所以我們回傳1 作為第一個測驗用例的答案。
在第二個測驗用例中,總共有 35 個糖果。我們必須在 10 個孩子之間平分所有 35 顆糖果。在給每個孩子最多 3 顆糖果后,我們發現我們只剩下 5 顆糖果,我們不能分享/打破/切割 5 顆糖果在 10 個孩子之間分享,因此我們回傳 5 作為第二個測驗用例的答案。
這是我的代碼(在 Python 3 中)
num_testcases = int(input())
for etc in range(num_testcases):
n, m = map(int, input().split())
candies = input().split()
candies_arr = [int(i) for i in candies]
result = sum(candies_arr) % m
print('#Case {}: {}'.format(etc 1, result))
我真的很想了解/理解為什么我的代碼不被接受為正確答案。我可能一定低估了這個問題的難度,我的思考程序可能是錯誤的。謝謝大家的時間,我希望一個有利的答復。
此致。
uj5u.com熱心網友回復:
您的輸出格式不正確。
這就是你正在使用的:
print('#Case {}: {}'.format(etc 1, result))
您實際需要使用的內容:
print('Case #{}: {}'.format(etc 1, result))
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/514861.html
標籤:python-3.x算法
上一篇:使用二維陣列尋找孤立的城市
下一篇:如何在二維陣列中找到唯一的數字
