刷题刷出新高度,偷偷领先!偷偷领先!偷偷领先! 关注我们,悄悄成为最优秀的自己!

简答题

编程实现:

有N个小朋友从左到右排成一排,每个小朋友手中都有一定数量的糖果,且糖果总数量是N的倍数。

计算出最少调整几次可以使每个小朋友的糖果数量相同。

调整规则如下:

规则1:每个小朋友的糖果只能调整到左右相邻的两个小朋友手中;

规则2:第一个小朋友的糖果只能调整到第二个小朋友手中;

规则3:最后一个小朋友的糖果,只能调整到倒数第二个小朋友手中。 

例如:1~3号个小朋友原有糖果数量分别为6,4,2。

1)1号小朋友拿出两块给2号小朋友;

2)2号小朋友拿出两块给3号小朋友;

两次操作后三个小朋友手中糖果分别为4,4,4。 

即按照调整规则最少操作2次可以使3个小朋友手中糖果数量都相同。

现按照顺序给出第1~N个小朋友手中原有糖果数量,按照调整规则计算出最少调整几次可以使小朋友手中的糖果数量都相同。

输入描述:

输入N个正整数(1<正整数<100),表示从1到N号小朋友手中原有糖果数量,正整数之间以一个英文逗号隔开,且所有正整数之和是N的倍数

输出描述:

按照调整规则计算出最少操作几次可以使小朋友手中糖果数量都相同


样例输入:

6,4,2

样例输出:

2

使用微信搜索喵呜刷题,轻松应对考试!

答案:

```pythondef min_adjust(nums):N = len(nums)total_candies = sum(nums)target_candies = total_candies // Nmoves = 0for i in range(N):if nums[i] > target_candies:moves += nums[i] - target_candiesnums[i] = target_candieselif nums[i] < target_candies:moves += target_candies - nums[i]if i != N - 1:nums[i+1] += nums[i] - target_candiesnums[i] = target_candiesreturn moves# 测试nums = list(map(int, input().split(',')))print(min_adjust(nums))```

解析:

【喵呜刷题小喵解析】:

首先,我们定义了一个函数`min_adjust`,它接受一个列表`nums`作为输入,表示每个小朋友手中的糖果数量。

在函数内部,我们首先计算了小朋友手中糖果的总数`total_candies`,然后计算了每个小朋友的目标糖果数量`target_candies`,即`total_candies`除以小朋友的数量N。

然后,我们遍历每个小朋友,根据他们的糖果数量进行调整。如果某个小朋友的糖果数量大于目标数量,我们就将其糖果数量调整为目标数量,并累加移动次数。如果某个小朋友的糖果数量小于目标数量,我们首先将其糖果数量调整为目标数量,并累加移动次数。然后,如果这不是最后一个小朋友,我们就将他的糖果数量与相邻的小朋友进行交换,直到相邻的小朋友糖果数量也达到目标数量。

最后,我们返回移动次数。

在主程序中,我们读取输入,调用`min_adjust`函数,并打印结果。
创作类型:
原创

本文链接:编程实现: 有N个小朋友从左到右排成一排,每个小朋友手中都有一定数量的糖果,且糖果总数量是N的倍数。

版权声明:本站点所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明文章出处。

让学习像火箭一样快速,微信扫码,获取考试解析、体验刷题服务,开启你的学习加速器!

分享考题
share