liumuying


私信TA

用户名:admin001

访问量:2276

签 名:

等  级
排  名 20027
经  验 702
参赛次数 0
文章发表 6
年  龄 0
在职情况 学生
学  校 jiangfu
专  业

  自我简介:

解题思路: 在分糖果的时候一定是原来有的  每一轮单独算 一定要注意最后一个数是第一个和自身除以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 人评分

  评论区

  • «
  • »