本文主要是介绍平安科技2020校招技术岗部分编程题汇总-分糖果,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
n 个小朋友坐在一排,每个小朋友拥有 ai 个糖果,现在你要在他们之间转移糖果,使得最后所有小朋友拥有的糖果数都相同,每一次,你只能从一个小朋友身上拿走恰好两个糖果到另一个小朋友上,问最少需要移动多少次可以平分糖果,如果方案不存在输出 -1。
输入描述:
每个输入包含一个测试用例。每个测试用例的第一行包含一个整数n(1 <= n <= 100),接下来的一行包含n个整数ai(1 <= ai <= 100)。
输出描述:
输出一行表示最少需要移动多少次可以平分苹果,如果方案不存在则输出-1。
输入例子1:
4
7 15 9 5
输出例子1:
3
解题思路:
'''
1.先判断数组总和使否 可以 被n整除,否则没法分 均匀,
2.然后再判断每个 小孩的苹果与平均值 的差,若差不是2的倍数,也无法移动成功,
3.如果前两个条件 满足就把 比均值多 的苹果数 减去均值,将其总和除以2,就是得到 的移动 次数了
'''
#3.分糖果
n = int(input())
read_list = list(map(int, input().split()))
'''
1.先判断数组总和使否 可以 被n整除,否则没法分 均匀,
2.然后再判断每个 小孩的苹果与平均值 的差,若差不是2的倍数,也无法移动成功,
3.如果前两个条件 满足就把 比均值多 的苹果数 减去均值,将其总和除以2,就是得到 的移动 次数了
'''
count=0
num = 0
avg = sum(read_list) / n
if sum(read_list) % n ==0:for i in read_list:if abs(i-avg) % 2==0:count=count+1else:print(-1)breakif count == n:for j in read_list:if j>avg:num = num + (j-avg)/2print(int(num))
else:print(-1)
这篇关于平安科技2020校招技术岗部分编程题汇总-分糖果的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!