当前位置: 首页 > news >正文

python-约瑟夫环(赛氪OJ)

[题目描述]
n 个人( 0,1,2,3,4...n−1 ),围成一圈,从编号为 k 的人开始报数,报数报到 m 的人出队。
下次从出队的人之后开始重新报数,循环往复,当队伍中只剩最后一个人的时候,那个人就是大王。现在,给定 n ,k ,m 。
请你求出大王的编号。
输入格式:
输入一行包含三个整数 n , k , m 。
输出格式:
输出一个整数。
样例输入
5 1 2
样例输出
3
数据范围:
对于 100% 的数据,保证 1≤n≤100,1≤k≤n−1,1≤m≤100 。
来源/分类(难度系数:一星)


完整代码展示:
n,k,m=map(int,input().split())
a=[]
for i in range(0,n):
      a.append(i)
a1=a[0:k]
a2=a[k::]
a=a2+a1
while len(a)>1:
       a3=a[0:m-1]
       a4=a[m::]
       a=a4+a3
print(a[0])


代码解释:
n,k,m=map(int,input().split()) ”,让用户输入总人数n,开始报数的人的编号k和给定的需出列的人的报数m。
a=[]
 for i in range(0,n):
       a.append(i)     
”,建立一个空列表a,接着将从0~n-1编号的n个人依次添加进列表a中。
a1=a[0:k]
 a2=a[k::]
 a=a2+a1   
”,令a1=a[0:k],a2=a[k::],接着将a[2]+a[1]重新赋给a(注意:是a=a2+a1,不是a=a1+a2),本段代码意义在于将编号为k的人调到列表首位,作为报数的第一个人。
while len(a)>1:
         a3=a[0:m-1]
         a4=a[m::]
         a=a4+a3
      ”,当列表a中元素数量大于1时(即len(a)>1),令a3=a[0::m-1],a4=a[m::],接着将a4+a3重新赋给a。当len(a)==1时,跳出整个while循环。(本段代码意义在于从列表首开始报数,然后将每次报数为m的元素删除,接着让报数为m的元素的后面一位元素作为列表首)。
print(a[0]) ”,打印a[0]。(即最后一个人)


运行效果展示:

3830aff0049c4057acb7959f53282e84.jpg

eb956787739d4f11a7c080295b16f60b.jpg 

               (声明:以上内容均为原创) 

http://www.lryc.cn/news/419222.html

相关文章:

  • Less 教程:从入门到精通
  • 【VScode】如何在anaconda虚拟环境中打开vscode项目
  • Flink任务提交流程和运行模式
  • 【机器学习】 Sigmoid函数:机器学习中的关键激活函数
  • Vue+Element Plus后台管理主界面搭建实现
  • JAVA—异常
  • 常见八股面试题:Dubbo 和 Spring Cloud Gateway 有什么区别?
  • k8s分布式存储-ceph
  • Redis cluster集群部署
  • Java泛型的理解
  • Linux 照片图像编辑器
  • 【51单片机仿真】基于51单片机设计的智能六位密码锁(匿*输入/密码修改/警示/保存/恢复/初始密码)源码仿真设计文档演示视频——文末资料下载
  • 【Vue3】组件通信之mitt
  • 状态压缩动态规划——状压dp
  • 【算法】最短路径算法思路小结
  • zabbix7.0TLS-05-快速入门-触发器
  • vue关于双向数据绑定的骚操作
  • 基于Jeecgboot3.6.3的vue3版本的流程中仿钉钉流程的鼠标拖动功能支持
  • Docker Compse单机编排
  • “AI+Security”系列第2期(一):对抗!大模型自身安全的攻防博弈
  • Python Static Typing: 提升代码可靠性与可读性的使用技巧
  • Datawhale多模态赛事(1)
  • 云手机在海外社交媒体运营中的作用
  • Ubuntu怎么进入救援模式或单用户模式
  • 学习鸿蒙-构建私有仓储
  • 经验是负债,学习是资产
  • 电脑屏幕录制工具分享5款,附上详细电脑录屏教程(2024全新)
  • Docker资源隔离的实现策略以及适用场景
  • PLL基本原理、设计及应用
  • Qt实现类似淘宝商品看板的界面,带有循环翻页以及点击某页跳转的功能