解题思路:
注意事项:之前的想法一直要数的人去动,这个程序反过来想,数数的人站在队头不动就和卖票的一样,数到那个数踢出去就很快剩下的继续转圈圈
参考代码:
n,m=map(int,input().split())
####s=s1=s2=''
li=[]
for i in range(1,n+1):
li.append(i)
## s=s+str(i)
####s1=s
####while s1!='':
#### s2=s2+s1[m-1]
#### s1=s1[m:]+s1[0:m-1]
###### s=s1
####for i in s2:
#### print(i,end=' ')
####ls=list[range(1,n+1)]
##ls=[]
##for i in range(1,n+1):
## ls.append(i)
ls2=[]
##ls3=[]
##while len(ls)>=m:
## ls2.append(ls[m-1])
## ls=ls[m:]+ls[:m-1]
##print('ls=',ls)
##
##while len(ls)>1:
##ls3=ls+ls
##ls2.append(ls3[m-1])
##
####ls=ls.append(ls)
##
n=0#为什么从零开始
while len(li)!=0:
if n%m==m-1:#这个很神奇,也不神器,m-1余数,那个要被踢的刚好在队头
ls2.append(li[0])
del(li[0])#踢出去
else:#除了数到到m时,其他时候转圈圈
li.append(li[0])#这里队尾增加队头的
del(li[0])#删除队头的就开始转圈圈了
n+=1#因为这里才能记录上面队头转了一个人过去了
##for i in ls2:
## print(i,end=' ')
print(ls2[-1])
0.0分
0 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复