python编程:有n个人围城一个圈,顺序排号,从第一个人开始报数(1-3),凡是报数为3的
答案:3 悬赏:30 手机版
解决时间 2021-03-03 10:38
- 提问者网友:人生佛魔见
- 2021-03-02 20:34
python编程:有n个人围城一个圈,顺序排号,从第一个人开始报数(1-3),凡是报数为3的
最佳答案
- 五星知识达人网友:风格不统一
- 2021-03-02 21:01
#!/usr/bin/env python3.6
def out(n):
q = list(range(1, n+1))
c = 1
while len(q) != 1:
t = []
for i in q:
if c != 3:
t.append(i)
c += 1
if c > 3:
c -= 3
q = t
return q[0]
def main():
n = input('Enter a number: ')
try:
n = int(n)
except Exception as e:
print('Invalid input.')
return
print('The last one is:', out(n))
if __name__ == '__main__':
main()Enter a number: 3
The last one is: 2
def out(n):
q = list(range(1, n+1))
c = 1
while len(q) != 1:
t = []
for i in q:
if c != 3:
t.append(i)
c += 1
if c > 3:
c -= 3
q = t
return q[0]
def main():
n = input('Enter a number: ')
try:
n = int(n)
except Exception as e:
print('Invalid input.')
return
print('The last one is:', out(n))
if __name__ == '__main__':
main()Enter a number: 3
The last one is: 2
全部回答
- 1楼网友:迟山
- 2021-03-02 23:22
1
- 2楼网友:青尢
- 2021-03-02 22:12
n=int(input("请输入总人数(从一个报数开始以1编号,逐次递增):"))
a=list(range(1,n+1))
while len(a)>2:
c = len(a) % 3
b = []
if c == 0:
for i in range(1, len(a) + 1):
if i % 3 != 0:
b.append(a[i - 1])
a = b
print(a)
else:
for i in range(1, len(a) + 1):
if i % 3 != 0:
b.append(a[i - 1])
a = b[-c:] + b[:-c]
print(b)
print(a)
print(a)
print("最后剩下人的原始编号为:{}".format(a[1]))
'''解题思路:当人数恰好是3的倍数时,剔除报数中3的倍数的人员编号。但是总人数不为3的倍数时,需要把最后剩下的1个或者2个人取出来,放到剔除3倍数后人员编号的最前面(从新一次报数,这样模拟围城一个圈的效果)。通过while循环不断重复以上操作,直到剩余人数为2,剩下的人员编号即最后留下2个数第二个(报三次数,第1个数为3因此去掉)。'''
a=list(range(1,n+1))
while len(a)>2:
c = len(a) % 3
b = []
if c == 0:
for i in range(1, len(a) + 1):
if i % 3 != 0:
b.append(a[i - 1])
a = b
print(a)
else:
for i in range(1, len(a) + 1):
if i % 3 != 0:
b.append(a[i - 1])
a = b[-c:] + b[:-c]
print(b)
print(a)
print(a)
print("最后剩下人的原始编号为:{}".format(a[1]))
'''解题思路:当人数恰好是3的倍数时,剔除报数中3的倍数的人员编号。但是总人数不为3的倍数时,需要把最后剩下的1个或者2个人取出来,放到剔除3倍数后人员编号的最前面(从新一次报数,这样模拟围城一个圈的效果)。通过while循环不断重复以上操作,直到剩余人数为2,剩下的人员编号即最后留下2个数第二个(报三次数,第1个数为3因此去掉)。'''
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯