带启动环节的编码练习#1-2022年启动



我试着在Google Kickstart上解决练习题,但我想出的解决方案似乎是错误的[我真的不知道/不明白为什么]。这个问题基本上是要求我们在向m个孩子分享n个糖果后,返回剩余的糖果数量。所有的孩子都应该有相同数量的糖果,每个孩子都必须得到尽可能多的糖果。

示例(+思维过程(:给5袋糖果和2个孩子,我们总共有25个糖果,其中每袋包含5个糖果(即5555(。分享所有的糖果,让每个孩子都能得到最大数量的糖果,所有孩子都能收到相同数量的糖果。我们开始一次一个孩子轮流分享糖果。到两个孩子每人收到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个糖果了,我们无法在10个孩子中分享/打碎/切下5个糖果,因此我们返回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))

我真的很想了解/理解为什么我的代码不被接受为正确答案。我可能低估了这个问题的难度,我的思考过程可能是错误的。感谢大家抽出时间,我希望得到一个良好的答复。

致以最良好的问候。

您的输出格式不正确。

这就是你正在使用的:

print('#Case {}: {}'.format(etc+1, result))

您实际需要使用的:

print('Case #{}: {}'.format(etc+1, result))

最新更新