东邪 发表于 2009-6-13 21:23:38

幸运儿

有学号为1--n的n个同学,依次排成一个圆,从1号开始进行1-2-3-1-2-3...循环报数,报到
3的同学出列,问:最后剩下的一个人是几号同学?

如果进行1-2-3-...-m-1-2-...-m-1-...循环报数,结果又如何?

northwolves 发表于 2009-6-17 18:15:54

约瑟夫环

northwolves 发表于 2009-6-17 18:24:44

Excel中列个自定义函数即可:Function winner(ByVal n As Long, Optional ByVal m As Long = 3) As Long
Dim i As Long, w As Long
For i = 2 To n
w = (w + m) Mod i
Next
winner = w + 1
End Function

Sub Macro1()
MsgBox winner(10000000, 3)
End Sub

wsc810 发表于 2009-6-18 11:30:22

考虑了该问题后,如果研究出列数构成的序列,则此问题可以看成对某个自然数序列做以某种变换,得到一个新的序列。若在此序列的基础之上,施加同样的变换,则又得到另一个新的序列,反复使用该变换,则可最终得到一个与原序列完全相同的序列。下面举一例说明(n =7,m=3) 。
1 2 3 4 5 6 7
3 6 2 7 5 1 4
2 1 6 4 5 3 7
6 3 1 7 5 2 4
1 2 3 4 5 6 7
如果竖着看,即每一列则构成一个循环群(暂且就叫做群吧,因为我对这一概念不是很了解),它们分别是{5}{4,7}{1,3,2,6}
下面给出m=2到11的变换后的首序列,及该循环序列所构成的集合。
S(7,2)=(2,4,6,1,5,3,7){7}   {3,6}{1,2,4}但该序列的循环次数是6。
S(7,4)=(4,1,6,5,7,3,2)    {3,6}    {1,4,5,7,2}      但该序列的循环次数是10
S(7,5)=(5,3,2,4,7,1,6)    {4}   {2,3}    {1,5,7,6}
S(7,6)=(6,5,7,2,1,4,3)    {3,7}    {1,6,4,2,5}
S(7,7)=(7,1,3,6,2,4,5)   {3}{4,6}{1,7,5,2}
S(7,8)=(1,3,6,5,2,7,4)   {1}{3,6,7,4,5,2}
S(7,9)=(2,5,3,4,1,6,7)   {3}{4}{6}{7}   {1,2,5}
S(7,10)=(3,7,6,2,4,5,1)   {1,3,6,5,4,2,7}
S(7,11)=(4,2,3,7,5,1,6)    {2} {3} {5} {1,4,7,6}
由以上简单的分析可以看出,集合中的每一种组合都对应着数n的一种加法拆分法 。
希望编程爱好者编个程序对以上问题做出更深入的研究。不知对该问的研究可用在哪一方面上,加密,解密能用的着吗?

shshsh_0510 发表于 2009-6-18 11:42:00

4# wsc810

shshsh_0510 发表于 2009-6-18 11:44:10

你说的这个和上面的问题没啥关系吧。
每个置换都可以按你上面的去做,基元集合的元素形成不同的轨道,这是群论基础的内容

东邪 发表于 2009-6-18 13:12:19

只找到递推公式
A(2)=2
A(k+1)=A(k)+3 或 A(k)+3-k(当A(k)+3大于k时)

bolizhou 发表于 2009-6-19 16:52:47

本帖最后由 bolizhou 于 2009-6-19 17:03 编辑

3#楼的程序好,但剩下不会只有1人啊?另外一个人呢,号码是多少,怎么编?

winxos 发表于 2009-6-19 21:55:14

Excel中列个自定义函数即可:Function winner(ByVal n As Long, Optional ByVal m As Long = 3) As Long
Dim i As Long, w As Long
For i = 2 To n
w = (w + m) Mod i
Next
winner = w + 1
End Function

Su ...
northwolves 发表于 2009-6-17 18:24 http://bbs.emath.ac.cn/images/common/back.gif
两人报数的约瑟夫环跟二进制有巧妙的联系,不知道多人报数的有没有类似的关系?
页: [1]
查看完整版本: 幸运儿