'''
有n个小朋友围坐成一圈。老师给每个小朋友随机发**偶数**个糖果,然后进行下面的游戏:
每个小朋友都把自己的糖果分一半给左手边的孩子。
一轮分糖后,拥有奇数颗糖的孩子由老师补给1个糖果,从而变成偶数。
反复进行这个游戏,直到所有小朋友的糖果数都相同为止。
你的任务是预测在已知的初始糖果情形下,老师一共需要补发多少个糖果。
输入格式
程序首先读入一个整数 N(2<N<100),表示小朋友的人数。
接着是一行用空格分开的N个偶数(每个偶数不大于 1000,不小于2)
输出格式
要求程序输出一个整数,表示老师需要补发的糖果数,
样例输入
3
2 2 4
样例输出
4
'''
# 给左边的孩子
def give_left_child(p_list,pn , new_p_list ):
'''
序号为pn的孩子,给num的糖果给左边
:param p_list:
:param pn:
:return:
'''
'''
每个人都是自己的一半,加上右边人的一半
'''
print(pn)
new_p_list[pn - 1] = p_list[pn - 1]//2 + p_list[ pn ]//2
def one_circle(p_list):
new_p_list = [0]*len(p_list)
# 第一轮
for i in range(len(p_list)):
give_left_child(p_list, i,new_p_list)
print(new_p_list)
return new_p_list
p_list = [2,2,4]
p_list = one_circle(p_list)
print(p_list)
g_give_count = 0
# 教师给糖
def teacher_give_candy(p_list):
global g_give_count
for i in range(len(p_list)):
if(p_list[i]%2 == 1):
p_list[i] = p_list[i] + 1
g_give_count = g_give_count + 1
teacher_give_candy(p_list)
print("2---")
print(p_list)
p_list = one_circle(p_list)
print("3---")
print(p_list)
teacher_give_candy(p_list)
print("4---")
print(p_list)
# 如果全都相等,就输出糖果数
print(g_give_count)
蓝桥杯-分糖果
最新推荐文章于 2024-12-24 12:10:02 发布