初步思路
题目表述不明,这个给糖果的步骤其实有好几种理解,经过尝试我知道是:
先拿出一半,再一起给出去。
我准备建立一个N * 2(N是小朋友个数)的列表,每一行上第一个用于存放这一个小孩得到的糖果数,第二个用于存放这个小孩将要给出去的糖果数,可以通过计算前一个后一个小孩糖果数量的一半得到值,得到下一轮的糖果数量。
代码
import sys
# main
candy = 0
n = int(input())
child = map(int, input().split())
child = list(child)
# 对收到以及给出的列表进行赋值
temp = [[] for i in range(n)]
for k in range(1000):
for i in range(n):
if(i == 0):
temp[i].insert(0, child[-1] / 2)
temp[i].insert(1, child[0] / 2)
elif(i == n - 1):
temp[i].insert(0, child[-2] / 2)
temp[i].insert(1, child[-1] / 2)
else:
temp[i].insert(0, child[i - 1] / 2)
temp[i].insert(1, child[i] / 2)
for j in range(n):
child[j] = child[j] + temp[j][0] - temp[j][1]
if(child[j] % 2 != 0):
child[j] = child[j] + 1
candy = candy + 1
else:
continue
if(child.count(child[0]) == len(child)):
print(candy)
sys.exit(0)
else:
continue