首页 > 其他分享 >刷题笔记——3005.糖果游戏

刷题笔记——3005.糖果游戏

时间:2022-12-16 10:58:18浏览次数:56  
标签:位置 li 3005 小朋友 糖果 刷题

题目

3005.糖果游戏

代码

li = list(map(int,input().strip().split()))

lenth = len(li)

for i in range(lenth):
    
    # 设置当前位置的左右位置
    if i>0 and i<lenth-1:
        left = i-1
        right = i+1
    elif i==0:
        left = lenth-1
        right = i+1
    elif i==lenth-1:
        left = i-1
        right = 0
        
    # 分糖果
    li[i] = int(li[i] / 3)
    li[left] = li[left] +li[i]
    li[right] = li[right] +li[i]

for i in range(lenth):
    print('{:>5d}'.format(li[i]),end='')

算法思想

总结本题题意:5 个小朋友以一个环坐下,每个人要将自己的糖果分成 3 份,其中 2 份分别给左右相邻的小朋友,自己留一份,但不足 1/3 的要吃掉,求一轮之后各个小朋友拥有的糖果数量。

最初是计划通过环形链表来实现,但过于复杂,所以通过左右指针来解决这个问题。

首先,通过 if 语句查找每个位置的左右位置,其中首位和末位的需要单独设置。

位置确定之后执行分糖果的操作。实际上,只需要求出当前糖果数量 1/3 的 整数部分(小数部分可看作是要吃掉的多余糖果),同时给左右位置也加上这 1/3 即可。

最后通过循环格式化输出来匹配题目要求的格式。本题代码中所用format格式可查阅 刷题笔记——1807.[编程基础]输入输出练习之格式控制 这篇文章。

标签:位置,li,3005,小朋友,糖果,刷题
From: https://www.cnblogs.com/KoiC/p/16986704.html

相关文章