魔方吧·中文魔方俱乐部

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

有趣的数论问题 [复制链接]

Rank: 1

积分
70
帖子
45
精华
0
UID
1326591
1#
发表于 2013-12-30 11:17:22 |显示全部楼层
同楼上 13824

使用道具 举报

Rank: 1

积分
70
帖子
45
精华
0
UID
1326591
2#
发表于 2013-12-31 09:15:08 |显示全部楼层
本帖最后由 bristlegrass 于 2013-12-31 10:58 编辑

好吧...我也是跑程序的...
要思路的话就随便写一个吧

把数分成4组:
a.157
b.248
c.39
d.6

6在中间:
d和bc都不能相邻,所以先从a组抽2个数组成一个集合(e):3*2=6;
a组剩下一个数(f);
b组排列数:3*2=6;
把c组插入b组,分情况:
A.同在一端,无符合题意的排列:0;
B.各在一端,则ef只能插在248中间:2*2=4;
C.一个在一端一个在中间,则ef还有一个要插中间:2*2*2*(7-1)*2=96;
D.在同一空当,则ef有两个空当必插:2*2*2=8;
E.在不同空当:2*6*7=84;
综上:6*6*(0+4+96+8+84)=6912.

6在两端(2):
d和bc都不能相邻,所以先从a组抽1个数组成一个集合(g):3;
a组剩下两个数(h);
b组排列数:3*2=6;
把c组插入b组,分情况:
F.同在一端,无符合题意的排列:0;
G.各在一端,则h只能插在b中间:2*2=4;
H.一个在一端一个在中间,则h还有一个要插中间:2*2*2*(7-1)*2=96;
I.在同一空当,则h有两个空当必插:2*2*2=8;
J.在不同空当:2*6*7=84;
综上:2*3*6*(0+4+96+8+84)=6912.

总:6912+6912=13824.

也不知道对不对-.- 顺便说一下我的程序跑了72秒是不是很渣...
ps:改了一下算法,现在36秒...

使用道具 举报

Rank: 1

积分
70
帖子
45
精华
0
UID
1326591
3#
发表于 2013-12-31 18:15:05 |显示全部楼层
本帖最后由 bristlegrass 于 2013-12-31 18:21 编辑
tm__xk 发表于 2013-12-31 14:56
呃..我的程序..大概跑了..半秒?→_→


QAQ,好吧我承认我很渣,我是穷举出来的-.-

使用道具 举报

Rank: 1

积分
70
帖子
45
精华
0
UID
1326591
4#
发表于 2014-1-3 10:30:18 |显示全部楼层
tm__xk 发表于 2014-1-1 00:11
嘛..我也是穷举吖..这也就是穷举了吧..
嘛..怎么说也每层都把限制条件弄进去了..怎么说也写了个九重循环 ...

刚刚发现写成九重循环确实比穷举九位数快......不到0.02s

使用道具 举报

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

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

GMT+8, 2024-5-4 10:37

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部