解题思路: 在分糖果的时候一定是原来有的  每一轮单独算 一定要注意最后一个数是第一个和自身除以2  而第一个数会在循环中进行计算  为防止覆盖数据  要在循坏外部调整好数据的计算和区分  最后在利用set(集合)的特点进行判断是不是每个人完全一样  具体可看代码!

参考代码:

n=int(input())
list01=list(map(int,input().split()))
# 记录糖果数
c=0
# 数组长度
l=len(list01)

def count():
    '''
        此函数用来进行学生间给糖 即 给以此左边的一半
    
    '''
    global l
    # 用来暂时记录数组最后一个数字 防止覆盖
    temp=list01[l-1]
    # 最后一个数 防止第一个数在计算过程中覆盖原来的 单独计算
    list01[l-1] = (list01[l-1]+list01[0])//2
    for i in range(l):
        if i+1 < l-1:
            # 因为是圆形座位  所以要进行重复的赋值
            list01[i]=(list01[i]+list01[i+1])//2
        elif i==l-2: # 倒数第二个数字用之前未覆盖的最后一位数进行计算
            list01[i]=list01[i]//2+temp//2
    check_candynum(list01)

def check_candynum(m):
    '''
        此函数进行数目判断
    
    '''
    global c
    # 集合的长度如果为1  说明只有1个数  全是一样的
    if len(set(list01))==1:
        print(c)
    else:
        teacher_reput()
def teacher_reput():
    '''
     此函数用来表示 老师重新补充的糖果数
    
    '''
    for j in range(len(list01)):
        global c

        if list01[j] % 2 == 1:
            list01[j]+=1
            c+=1

    count()

   # 进行调用
count()


点赞(0)
 

0.0分

0 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论