蓝桥杯--分糖果

编程入门 行业动态 更新时间:2024-10-24 19:24:57

蓝桥杯--分<a href=https://www.elefans.com/category/jswz/34/1761997.html style=糖果"/>

蓝桥杯--分糖果

蓝桥杯–01分糖果

问题描述

有n个小朋友围坐成一圈。老师给每个小朋友随机发偶数个糖果,然后进行下面的游戏:每个小朋友都把自己的糖果分一半给左手边的孩子。一轮分糖后,拥有奇数颗糖的孩子由老师补给1个糖果,从而变成偶数。反复进行这个游戏,直到所有小朋友的糖果数都相同为止。你的任务是预测在已知的初始糖果情形下,老师一共需要补发多少个糖果。
输入格式
程序首先读入一个整数N(2<N<100),表示小朋友的人数。接着是一行用空格分开的N个偶数(每个偶数不大于1000,不小于2)
输出格式
要求程序输出一个整数,表示老师需要补发的糖果数。
样例输入
3 2 2 4
样例输出
4

思路解析

模拟整个过程即可,注意边界值(result[0]的更新)的处理


def tansmit_candy(result):"""分一半给左手边:param result: 各小孩拥有糖果数:return: 新的拥有糖果情况"""start = result[0]end = result[len(result) - 1]for i in range(1, len(result)):result[i - 1] += result[i] // 2result[i] /= 2result[len(result) - 1] += start // 2result[0] -= start // 2def supply(result):"""补发糖果给拥有奇数个糖果的小孩,注意边界值的处理:param result::return:"""global supply_numberfor i in range(len(result)):if result[i] % 2:result[i] += 1supply_number += 1def game_end(result):"""判断游戏是否结束,即所有小孩糖果数是否相同:param result::return:"""for i in range(len(result)):if result[i] != result[0]:return Falsereturn Trueif __name__ == '__main__':N = int(input())result = []supply_number = 0for i in range(N):temp = int(input())result.append(temp)while True:if not game_end(result):tansmit_candy(result)supply(result)else:breakprint(supply_number)

更多推荐

蓝桥杯--分糖果

本文发布于:2023-07-28 15:43:55,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1239194.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:糖果   蓝桥杯

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!