首页 > 编程语言 >python-约瑟夫环(赛氪OJ)

python-约瑟夫环(赛氪OJ)

时间:2024-08-09 18:52:05浏览次数:15  
标签:OJ python 约瑟夫 a1 a3 a2 a4 列表 报数

[题目描述]
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 

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

标签:OJ,python,约瑟夫,a1,a3,a2,a4,列表,报数
From: https://blog.csdn.net/2401_83954530/article/details/141069295

相关文章

  • 20240809-python实现TCP通信
    python实现TCP通讯1.0版本(备份)importsocketfromlogUtilsimportlogfromapiimportApidefhandle_client(client_socket,addr):log.info(f"客户端的ip地址和端口号:{addr}")try:whileTrue:#接收客户端发送的数据,这次接收数据的......
  • Python-和-PowerShell-协作教程-全-
    Python和PowerShell协作教程(全)原文:PowerShellandPythonTogether协议:CCBY-NC-SA4.0一、面向调查人员的PowerShell简介PowerShell提供了一个强大的获取引擎,可以从实时系统、服务器、外围设备、移动设备和数据驱动的应用程序(如ActiveDirectory)中获取大量信息。......
  • Blender-Python-API-教程-全-
    BlenderPythonAPI教程(全)原文:TheBlenderPythonAPI协议:CCBY-NC-SA4.0一、Blender界面本章讨论并定义Blender界面的组件。它作为我们在整个文本中讨论界面时使用的词汇的参考。我们将关注Python开发中最常用的接口组件,并为高效的Python脚本设置自定义接口。为......
  • 创造你自己的-Python-文本冒险-全-
    创造你自己的Python文本冒险(全)原文:MakeYourOwnPythonTextAdventure协议:CCBY-NC-SA4.0一、入门指南介绍你可能听过互联网上的口号,“学会编码!学会编码!”,并且您已经了解到Python是一个很好的起点…但是现在该怎么办呢?很多想编程的人不知道从何下手。你可以用代码创......
  • 面向忙碌的-Java-开发者的-Python-教程-全-
    面向忙碌的Java开发者的Python教程(全)原文:PythonfortheBusyJavaDeveloper协议:CCBY-NC-SA4.0一、语言让我们从了解Python与Java的不同之处开始我们的Python之旅。在下一章深入研究Python的语法之前,我将帮助你设置Python。Python是什么?Python是一种“......
  • python with 上下文管理器
    简介1、什么是上下文管理器?上下文管理器是一种实现了上下文管理协议(ContextManagementProtocol)的对象,它通过定义__enter__()和__exit__()两个特殊方法来实现资源的获取和释放。上下文管理器通常使用with语句进行调用,确保资源在使用完毕后能够被正确释放。python中上下文管理......
  • 从STM32CubeMX导入项目到Embedded Studio。(原文题目:Import projects from STM32CubeM
    原文链接https://wiki.segger.com/Import_projects_from_STM32CubeMX_to_Embedded_Studio原文来自于SEGGER的wiki,题目是ImportprojectsfromSTM32CubeMXtoEmbeddedStudio原文最后编辑于2022/2/21.摘要:CubeMX生成项目,导入到EmbeddedStudio,并添加必要的文件软件:STM32C......
  • [lnsyoj2244]凑数
    题意给定常数\(N,A,B,X,Y,Z\),求\(\min\{\alphaX+\betaY+\gammaZ(\alpha+\betaA+\gammaB=N)\}\)sol我们可以将\(1,A,B\)三者的性价比(即\(X,\frac{Y}{A},\frac{Z}{B}\))排序,性价比可能包括\(6\)种可能。其中,若\(1\)的性价比不劣于其他任一性价比,说明可以......
  • 用Python打造精彩动画与视频,9.2 从概念到成品的完整工作流程
     第九章:综合项目9.2从概念到成品的完整工作流程在前面的章节中,我们深入探讨了各种Python技术及其在动画与视频制作中的应用。在本章中,我们将综合运用这些技术,完成一个完整的项目——从初步概念到最终成品的工作流程。这一流程不仅包括技术实现,还涉及规划、设计、测试和发布......
  • 用Python打造精彩动画与视频,9.3 项目案例分享与反思
     第九章:综合项目9.3项目案例分享与反思在本节中,我们将分享几个成功的项目案例,并进行反思总结。这些案例将展示如何将前面所学的Python技术运用于实际项目中,同时我们将讨论项目中的挑战和解决方案,以及从中得到的经验教训。案例一:教育视频制作项目项目简介:本项目旨在为初学......