python画糖果_[蓝桥杯][2014年第五届真题]分糖果-超详细题解(Python代码)

问题描述 :

有n个小朋友围坐成一圈。老师给每个小朋友随机发偶数个糖果,然后进行下面的游戏:

每个小朋友都把自己的糖果分一半给左手边的孩子。

一轮分糖后,拥有奇数颗糖的孩子由老师补给1个糖果,从而变成偶数。

反复进行这个游戏,直到所有小朋友的糖果数都相同为止。

你的任务是预测在已知的初始糖果情形下,老师一共需要补发多少个糖果。

------------

需要注意的是轮每个人是把自己从一轮开始最初有的偶数个糖果的分给左边的人,并不是动态的在得到右边人给的糖果之后再折半给左边的人,知道这一点就简单了。

代码注释很详细,希望可以帮到你。

代码如下:

```python

peo_nums=int(input())

candy_nums=list(map(int,input().split())) #输入每人的糖果数量

count=0 #计老师补发的糖果数

while len(set(candy_nums))>1: #len(set(candy_nums))用来判断里面不同元素的个数

candy_nums1=[i for i in candy_nums] #用于减半计算

"""将candy_nums的元素复制到candy_nums1中,注意不能直接candy_nums1=candy_nums,因为这样会使candy_nums与candy_nums1

指向同一个列表。"""

for i in range(peo_nums):

if i==0:

"""第一个元素比较特殊,它是得到最后一个元素的一半"""

candy_nums[i]=candy_nums1[0]//2+candy_nums1[-1]//2

else:

candy_nums[i]=candy_nums1[i]//2+candy_nums1[i-1]//2

for j in range(peo_nums):

"""遍历糖果数,奇数加一"""

if candy_nums[j]%2 != 0:

candy_nums[j]+=1

count+=1

print(count) #打印输出老师补发的糖果

```

0.0分

2 人评分

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值