魔方吧·中文魔方俱乐部

 找回密码
 注册
搜索
热搜: 魔方
查看: 340253|回复: 12
打印 上一主题 下一主题

洗牌问题(已解决) [复制链接]

Rank: 7Rank: 7Rank: 7

积分
2632
帖子
1305
精华
8
UID
4456
性别

亚洲纪录(AsR) 国家(地区)纪录(NR) 十年元老

跳转到指定楼层
1#
发表于 2010-5-16 09:57:32 |只看该作者 |正序浏览
假设我们有 2n 张牌,它们以 1, 2, ..., n, n+1, ..., 2n 编号并在开始时保持着这种顺序.一次洗牌就是将牌原来的次序变为 n+1, 1, n+2, 2, ..., 2n, n,也就是将原来的前 n 张牌放到位置 2, 4, ..., 2n,并且将余下的 n 张牌按照他们原来的次序放到奇数位置 1, 3, ..., 2n-1.
(1)对于一个特定的 n,设需要k次洗牌才能将牌洗回原来的次序,求k.
(2)对于任意取定的 n,设第一张牌需要m次洗牌才能归位,是否恒有m=k?

这是一个由编程题引出的数学问题,困惑好几天了还没想出答案,望各位魔友指点。

[ 本帖最后由 123wyx 于 2010-5-19 19:04 编辑 ]

Rank: 7Rank: 7Rank: 7

积分
2632
帖子
1305
精华
8
UID
4456
性别

亚洲纪录(AsR) 国家(地区)纪录(NR) 十年元老

13#
发表于 2010-5-19 19:04:21 |只看该作者
明白了,谢谢各位!

使用道具 举报

Rank: 4

积分
1194
帖子
924
精华
6
UID
44804
性别
保密
12#
发表于 2010-5-17 22:36:31 |只看该作者
11楼的证明太漂亮了。本帖的两个提问都圆满的解答了

使用道具 举报

Rank: 4

积分
1843
帖子
1468
精华
1
UID
79281
性别

四年元老

11#
发表于 2010-5-17 19:49:14 |只看该作者
引用6#的结果。

位置 i 的牌经过一次洗牌后位置变为 2*i mod (2n+1)
第一张牌经过m次洗牌后回到初始位置,那么m满足 2^m mod (2n+1) =1。

所以位置 i 的牌经过m次洗牌后位置变为 (2^m)*i mod (2n+1) =i。
即m次洗牌后每张牌都归位,整副牌还原。

m=k 为方程  2^x mod (2n+1) =1 的最小正整数解。
已有 1 人评分经验 收起 理由
superacid + 5 精彩解答

总评分: 经验 + 5   查看全部评分

使用道具 举报

Rank: 4

积分
1206
帖子
1153
精华
0
UID
82168
性别
保密
居住地
其他
兴趣爱好
破解
理论
其它

八年元老 十年元老

10#
发表于 2010-5-17 19:48:41 |只看该作者
由6l,有m=k=2对模2n+1的阶.
不能再化简了吧..

使用道具 举报

Rank: 7Rank: 7Rank: 7

积分
2632
帖子
1305
精华
8
UID
4456
性别

亚洲纪录(AsR) 国家(地区)纪录(NR) 十年元老

9#
发表于 2010-5-17 16:42:07 |只看该作者
n=1    2
n=2    4
n=3    3/3
n=4    6/2
n=5    10
n=6    12
n=7    4/4/4/2
n=8    8/8
n=9    18
n=10   6/6/3/3/2
n=11   11/11
n=12   20/4
n=13   18/6/2
n=14   28
n=15   5/5/5/5/5/5
n=16   10/10/10/2
n=17   12/12/4/3/3
…………

确实没看出规律,现在越来越困惑。

[ 本帖最后由 123wyx 于 2010-5-17 16:45 编辑 ]

使用道具 举报

Rank: 7Rank: 7Rank: 7

积分
2632
帖子
1305
精华
8
UID
4456
性别

亚洲纪录(AsR) 国家(地区)纪录(NR) 十年元老

8#
发表于 2010-5-17 16:40:29 |只看该作者
楼上已经有高手出现了

现在仍然没有头绪

第二题 我考虑把全部的牌看成几个循环来分析。那么第一张牌所在循环的元素个数就是m值,各循环元素个数的最小公倍数就是k值。
手算了前几个n的循环的元素个数:
(第二列第一个数是1参与的循环的元素个数)

[ 本帖最后由 123wyx 于 2010-5-19 19:01 编辑 ]

使用道具 举报

Rank: 4

积分
2052
帖子
1452
精华
5
UID
84402
性别

四年元老 十年元老 十二年元老

7#
发表于 2010-5-16 12:21:33 |只看该作者
按楼上的方法确实有m=k啊
contact me by email: chutianxiang at gmail.com

使用道具 举报

Rank: 4

积分
1194
帖子
924
精华
6
UID
44804
性别
保密
6#
发表于 2010-5-16 12:06:02 |只看该作者
设牌的初始位置为x0,那么洗一次牌后的位置为2x0 mod (2n+1).
洗m次牌后的位置为x(m),那么有以下递推公式:
    x(0)=x0
        x(m)=2*x(m-1) mod (2n+1)
--------------------------------------------------
也就是说题目相当于:
     对于一个数x,乘以2(若结果大于2n,那么结果减去2n+1),一直进行下去,直到回到原来的数x为止。

使用道具 举报

Rank: 4

积分
1194
帖子
924
精华
6
UID
44804
性别
保密
5#
发表于 2010-5-16 11:52:15 |只看该作者
验证n=1000以内,都有m=k。

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

Archiver|手机版|魔方吧·中文魔方俱乐部

GMT+8, 2025-2-22 16:26

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部