解题思路: 在分糖果的时候一定是原来有的 每一轮单独算 一定要注意最后一个数是第一个和自身除以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 人评分
C语言程序设计教程(第三版)课后习题10.7 (C语言代码)浏览:512 |
C语言程序设计教程(第三版)课后习题8.3 (C语言代码)浏览:411 |
C语言程序设计教程(第三版)课后习题5.7 (C语言代码)浏览:609 |
本人酷爱递归实现很多问题,这里也是浏览:555 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:460 |
The 3n + 1 problem (C语言代码)浏览:551 |
C语言程序设计教程(第三版)课后习题5.4 (C语言代码)浏览:789 |
printf基础练习2 (C语言代码)浏览:503 |
演讲大赛评分 (C语言代码)浏览:1629 |
蛇行矩阵 (C语言代码)浏览:501 |