码农们来做题吧:约瑟夫杀人事件

版主: hci

回复
头像
Rabboni(菌斑首席思想指导员)楼主
论坛元老
论坛元老
帖子互动: 499
帖子: 15292
注册时间: 2022年 8月 14日 02:50

码农们来做题吧:约瑟夫杀人事件

帖子 Rabboni(菌斑首席思想指导员)楼主 »

说是有n个码农(这个n可能很大,可能有几个亿),排成1个圆圈。现在从1开始1,2报数,报到2的人就被杀了,现在问第k(1<=k<=n)个被杀的码农原来的排号是多少?别想用链表或者有序数组做循环,因为码农太多,会超时的。
听党中央话,跟习主席走
MrAnderson
论坛精英
论坛精英
帖子互动: 219
帖子: 7400
注册时间: 2022年 7月 23日 11:57

Re: 码农们来做题吧:约瑟夫杀人事件

帖子 MrAnderson »

条件不够吧?杀了一个之后,然后是从谁,从几开始数呢?
Rabboni 写了: 2022年 9月 2日 08:45 说是有n个码农(这个n可能很大,可能有几个亿),排成1个圆圈。现在从1开始1,2报数,报到2的人就被杀了,现在问第k(1<=k<=n)个被杀的码农原来的排号是多少?别想用链表或者有序数组做循环,因为码农太多,会超时的。
逼将有三种:老逼将,小逼将,装逼将
消灭买办是唯一出路
所谓女性解放,就是人类走向灭亡的开端
哈,狗子急了
头像
Rabboni(菌斑首席思想指导员)楼主
论坛元老
论坛元老
帖子互动: 499
帖子: 15292
注册时间: 2022年 8月 14日 02:50

Re: 码农们来做题吧:约瑟夫杀人事件

帖子 Rabboni(菌斑首席思想指导员)楼主 »

只要活着就往下数。譬如5个人,12,3,4,5,第一轮2,4被杀,然后是1被杀,然后5被杀,3是最后温拿。
听党中央话,跟习主席走
头像
Rabboni(菌斑首席思想指导员)楼主
论坛元老
论坛元老
帖子互动: 499
帖子: 15292
注册时间: 2022年 8月 14日 02:50

Re: 码农们来做题吧:约瑟夫杀人事件

帖子 Rabboni(菌斑首席思想指导员)楼主 »

一个简单版问题是,任意给n个人,排成圆圈,隔一杀人(跟上面一样),谁是最后温拿?这个是算术题,不需要编程。
听党中央话,跟习主席走
MrAnderson
论坛精英
论坛精英
帖子互动: 219
帖子: 7400
注册时间: 2022年 7月 23日 11:57

Re: 码农们来做题吧:约瑟夫杀人事件

帖子 MrAnderson »

温拿index = ceiling(log2n)
Rabboni 写了: 2022年 9月 2日 08:45 说是有n个码农(这个n可能很大,可能有几个亿),排成1个圆圈。现在从1开始1,2报数,报到2的人就被杀了,现在问第k(1<=k<=n)个被杀的码农原来的排号是多少?别想用链表或者有序数组做循环,因为码农太多,会超时的。
逼将有三种:老逼将,小逼将,装逼将
消灭买办是唯一出路
所谓女性解放,就是人类走向灭亡的开端
哈,狗子急了
头像
Rabboni(菌斑首席思想指导员)楼主
论坛元老
论坛元老
帖子互动: 499
帖子: 15292
注册时间: 2022年 8月 14日 02:50

Re: 码农们来做题吧:约瑟夫杀人事件

帖子 Rabboni(菌斑首席思想指导员)楼主 »

MrAnderson 写了: 2022年 9月 2日 10:41 温拿index = ceiling(log2n)
这题是奥数题,没那么容易。
听党中央话,跟习主席走
MrAnderson
论坛精英
论坛精英
帖子互动: 219
帖子: 7400
注册时间: 2022年 7月 23日 11:57

Re: 码农们来做题吧:约瑟夫杀人事件

帖子 MrAnderson »

这个只是最后温拿的序号。要算第k个,还得动脑筋。
Rabboni 写了: 2022年 9月 2日 11:27 这题是奥数题,没那么容易。
逼将有三种:老逼将,小逼将,装逼将
消灭买办是唯一出路
所谓女性解放,就是人类走向灭亡的开端
哈,狗子急了
头像
Rabboni(菌斑首席思想指导员)楼主
论坛元老
论坛元老
帖子互动: 499
帖子: 15292
注册时间: 2022年 8月 14日 02:50

Re: 码农们来做题吧:约瑟夫杀人事件

帖子 Rabboni(菌斑首席思想指导员)楼主 »

MrAnderson 写了: 2022年 9月 2日 11:32 这个只是最后温拿的序号。要算第k个,还得动脑筋。
我说的就是最后温拿。算第k个,必须编程解决。
听党中央话,跟习主席走
MrAnderson
论坛精英
论坛精英
帖子互动: 219
帖子: 7400
注册时间: 2022年 7月 23日 11:57

Re: 码农们来做题吧:约瑟夫杀人事件

帖子 MrAnderson »

你觉得哪里不对呢?
Rabboni 写了: 2022年 9月 2日 11:35 我说的就是最后温拿。算第k个,必须编程解决。
逼将有三种:老逼将,小逼将,装逼将
消灭买办是唯一出路
所谓女性解放,就是人类走向灭亡的开端
哈,狗子急了
TheMatrix2
论坛点评
论坛点评
帖子互动: 30
帖子: 2497
注册时间: 2022年 8月 20日 22:11

Re: 码农们来做题吧:约瑟夫杀人事件

帖子 TheMatrix2 »

MrAnderson 写了: 2022年 9月 2日 11:39 你觉得哪里不对呢?
你验证过了?
MrAnderson
论坛精英
论坛精英
帖子互动: 219
帖子: 7400
注册时间: 2022年 7月 23日 11:57

Re: 码农们来做题吧:约瑟夫杀人事件

帖子 MrAnderson »

没,就看了5个人的例子,至少是对的。上班偷闲呢。
TheMatrix2 写了: 2022年 9月 2日 11:42 你验证过了?
逼将有三种:老逼将,小逼将,装逼将
消灭买办是唯一出路
所谓女性解放,就是人类走向灭亡的开端
哈,狗子急了
Jack12345
论坛支柱
论坛支柱
2023年度优秀版主
帖子互动: 640
帖子: 9161
注册时间: 2022年 7月 22日 11:46

Re: 码农们来做题吧:约瑟夫杀人事件

帖子 Jack12345 »

这是 数学题,不用 编程 也可以解决
TheMatrix2
论坛点评
论坛点评
帖子互动: 30
帖子: 2497
注册时间: 2022年 8月 20日 22:11

Re: 码农们来做题吧:约瑟夫杀人事件

帖子 TheMatrix2 »

MrAnderson 写了: 2022年 9月 2日 11:47 没,就看了5个人的例子,至少是对的。上班偷闲呢。
我验证了n=8,最后剩下的是1。所以你的不对。:)
MrAnderson
论坛精英
论坛精英
帖子互动: 219
帖子: 7400
注册时间: 2022年 7月 23日 11:57

Re: 码农们来做题吧:约瑟夫杀人事件

帖子 MrAnderson »

好,下班了再来搞搞。
TheMatrix2 写了: 2022年 9月 2日 11:48 我验证了n=8,最后剩下的是1。所以你的不对。:)
逼将有三种:老逼将,小逼将,装逼将
消灭买办是唯一出路
所谓女性解放,就是人类走向灭亡的开端
哈,狗子急了
头像
Rabboni(菌斑首席思想指导员)楼主
论坛元老
论坛元老
帖子互动: 499
帖子: 15292
注册时间: 2022年 8月 14日 02:50

Re: 码农们来做题吧:约瑟夫杀人事件

帖子 Rabboni(菌斑首席思想指导员)楼主 »

其实这就是个排序问题,k=1的时候就是简单意义下的顺排,k=2的时候,。。。
听党中央话,跟习主席走
MrAnderson
论坛精英
论坛精英
帖子互动: 219
帖子: 7400
注册时间: 2022年 7月 23日 11:57

Re: 码农们来做题吧:约瑟夫杀人事件

帖子 MrAnderson »

2(n-2floor(log2n))
应该是这样吧,序号从0开始
Rabboni 写了: 2022年 9月 2日 12:40 其实这就是个排序问题,k=1的时候就是简单意义下的顺排,k=2的时候,。。。
逼将有三种:老逼将,小逼将,装逼将
消灭买办是唯一出路
所谓女性解放,就是人类走向灭亡的开端
哈,狗子急了
头像
Rabboni(菌斑首席思想指导员)楼主
论坛元老
论坛元老
帖子互动: 499
帖子: 15292
注册时间: 2022年 8月 14日 02:50

Re: 码农们来做题吧:约瑟夫杀人事件

帖子 Rabboni(菌斑首席思想指导员)楼主 »

MrAnderson 写了: 2022年 9月 2日 20:27 2(n-2floor(log2n))
应该是这样吧,序号从0开始
差不多吧,虽然序列是从1开始的,所以应该减一。

如果用编程的话非常简单,就是把二进制的最高位移到最低位,譬如23,二进制是10111,高位移到低位就变成了1111,所以结果是15。
听党中央话,跟习主席走
TheMatrix2
论坛点评
论坛点评
帖子互动: 30
帖子: 2497
注册时间: 2022年 8月 20日 22:11

Re: 码农们来做题吧:约瑟夫杀人事件

帖子 TheMatrix2 »

MrAnderson 写了: 2022年 9月 2日 20:27 2(n-2floor(log2n))
应该是这样吧,序号从0开始
n=8是对的。
回复

回到 “葵花宝典(Programming)”