while True:
n,m=map(int,input().split())
if n==m==0:
break
monkeys=[i+1 for i in range(n)]
while True:
for a in range(m-1):
monkeys.append(monkeys[a])
for b in range(m):
monkeys.pop(0)
if len(monkeys)==1:
break
print(monkeys[0])
约瑟夫问题,本地倒是能运行,但交上去就runtime error了,劳驾各位帮我改改
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
1条回答 默认 最新
- ash062 2022-11-18 15:48关注
你这样写复杂度太高了,while循环运行n-1次,嵌套的for循环运行2m-1次,复杂度都是mn了
可以这样改while True: n, m = map(int, input().split()) if n == m == 0: break monkeys = [i + 1 for i in range(n)] ind = 0 # 初始位置 for i in range(n - 1): ind = (ind + m - 1) % len(monkeys) # 弹出猴子的位置 _ = monkeys.pop(ind) # 弹猴子 print(monkeys[0])
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 1无用
悬赏问题
- ¥15 WPF 大屏看板表格背景图片设置
- ¥15 这个主板怎么能扩出一两个sata口
- ¥15 不是,这到底错哪儿了😭
- ¥15 2020长安杯与连接网探
- ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
- ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
- ¥16 mybatis的代理对象无法通过@Autowired装填
- ¥15 可见光定位matlab仿真
- ¥15 arduino 四自由度机械臂
- ¥15 wordpress 产品图片 GIF 没法显示