逻辑分析

约瑟夫环

https://ac.nowcoder.com/acm/problem/22227

n, k, m = input().split()
n = int(n)
m = int(m)
k = int(k)
lis = [0 for i in range(n)]  # 生成n个人,每个人的下标就是该人的编号
index = k                    # 第一个开始报数的人的下标(编号)为题目给的k
c = 0                        # 记录报数的序号
while lis.count(0) > 1:      # 当列表中只有一个人的时候停止循环
    if index >= len(lis):    # 当下标超出时,则返回到第一个人重新开始
        index = 0
    if lis[index] == 0:
        c += 1               # 记录报数
        if c == m:           # 报到 m 时,将此人的值改为 1
            lis[index] = 1
            c = 0            # 记录清零准备下次报数
    index += 1
print(lis.index(0))          # 循环结束列表中只剩一个人(0)该人的下标既是编号

全部评论

相关推荐

求offer的大角牛:不吃香菜
点赞 评论 收藏
分享
风中翠竹:真的真的真的没有kpi。。。面试官是没有任何kpi的,捞是真的想试试看这个行不行,碰碰运气,或者是面试官比较闲现在,没事捞个人看看。kpi算HR那边,但是只有你入职了,kpi才作数,面试是没有的。
双非有机会进大厂吗
点赞 评论 收藏
分享
投递长鑫存储等公司8个岗位
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务