面试题:100个小朋友围在一起,设定编号为1~100,依次按1,2,3,4,5,6,7,8,9循环报数,报到9的小朋友出圈,请写代码打印各个小朋友的出圈顺序?(Python实现)
2018-03-29 11:56
841 查看
L = [x for x in range(1, 101)] def fn(l, n=9): ll = [] if len(l) > 1: while len(l) > n-1: lst = [] for i in range(n-1, len(l), n): if (i + 1) % n == 0: ll.append(l[i]) lst.append(l[i]) if len(l) - 1 - i < n: for k in lst: l.remove(k) l = l[i:] + l[:i] while len(l) > 1: for x in range(2, n): if len(l) * x >= n: temp = l * x ll.append(temp[n-1]) l = l[l.index(temp[n-1]):] + l[:l.index(temp[n-1])] l.remove(temp[n-1]) break ll.append(l[0]) return ll ll = fn(L) count = 0 for x in range(len(ll)): if count % 10 == 0: print() print(ll[x], end=' ') count += 1 print() print("出圈的学生数:" + str(len(ll)))
运行结果为:
9 18 27 36 45 54 63 72 81 90 99 10 20 30 40 50 60 70 80 91 11 22 33 44 56 67 78 89 8 23 35 48 61 74 86 98 12 25 39 53 68 83 96 13 28 43 59 76 93 14 31 49 66 85 6 29 51 71 92 7 34 57 79 4 32 58 84 5 38 65 100 24 62 97 26 69 1 41 82 17 73 15 64 16 75 21 88 47 19 95 87 77 94 3 46 37 42 2 52 55 出圈的学生数:100
相关文章推荐
- 三个Java多线程循环顺序周期打印1-75个数(用CyclicBarrier实现代码)
- C语言用数组1. 简单约瑟夫环问题: N个人,编号从1~N围成一圈,输入一个数T,从1号开始报数,报到T的人出圈;下一人又从1开始报数,下一个报到T的人出圈,输出出圈顺序。 考虑问实现约瑟夫环问题
- 5、 有500个小朋友拉成一个圆圈,从其中一个小朋友开始依次编号1-500,从1号小朋友开始循环1-3报数,数到3的小朋友就退出。编写一个Java应用程序,计算出最后一个小朋友的号码是多少?
- python 实现:题目:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。
- 三个Java多线程循环顺序周期打印1-75个数(用CyclicBarrier实现代码)
- 有一个单向循环链表队列,从头开始报数,当报到m或者m的倍数的元素出列,根据出列的先后顺序重新组成单向循环链表。
- n人围圈,依次报数,找出报数为m的人出列,然后下一位开始重新报数,打印出列顺序
- 通过链表实现,13个人围成一圈,从第一个开始顺序报号1、2、3.凡报到3者推出圈子,找出打印并最后人的序号
- 程序员面试题精选100题(03)-求子数组的最大和—python实现
- 用python实现从1加到100的三种方法: for循环,while循环,导入模块法
- python help("modules") 打印help内容到文件的实现代码从pydoc中扒出来
- 看数据结构写代码(16)顺序队列的实现(循环队列)
- 打印100以内的素数(质数)----C++实现、python实现
- 一周stackoverflow热门问题选登:如何用Python for循环实现列表中数据两两循环打印?
- 多线程编程(二)——面试题,每个线程只打印一种字符,多个线程协同顺序打印n次字符串(求大神的其他实现方案)
- 约瑟夫环问题:有n个人围成一圈,顺序编号。从第1个人开始报数(从1-m报数),凡报到m的人退出圈子,问最后留下的是原来第几号的那位?
- 51. 某公司的面试题:100个人去按100个灯,每个人只能按它顺序的倍数的灯
- 1、使用快速枚举语法实现: //构建一个NSSMutableArray数组,用@”1”至@”100”进行填充。以NSLog依次打印数组中的内容,将此数组分为奇偶两数组,再打印两新数组中的元素。
- 使用python实现打印所有100以内的所有质数
- 面试题:有20个人围成一圈,顺序排号。从第一个人开始报数(从1到3报 数),凡报到3的人退出圈子