duck pls come in作为学习cs1102的一名学生,我十分感谢你给我们的帮助。 恕我孤陋寡闻,你是我
们的TA吗?
lab2a question 4 的确很难。我很想知道那个算法你是怎
么想出来的,你是怎么分析这个问题的.这样对我们的帮助更大,更有意义。说老实
话,就是读那三行代码也得花好长时间才能理解,可想而知,要想出来难度更大。[cigar (2-18 19:22, Long long ago)]
[ 传统版 |
sForum ][登录后回复]1楼
嘿嘿。。duck 大哥也没有这么强吧[我行故我 (2-18 19:37, Long long ago)] [ 传统版 | sForum ][登录后回复]2楼
:-)让你失望了,这个算法不是我想出来的。我也很佩服想出来这个算法的人。
个人觉得这道题目很没有意思(这时候,“不告诉你”跳出来说,这道题明明很好的嘛!)。从算法推测:
从这个数的的两个数的因式入手,例如24=2*12=3*8=4*6=6*4=8*3=12*2=24*1,如果2 可以被24整除,24的sets个数就会比原来24的sets数多出24/2=12的sets个数,但这时12的sets个数没有被完全算出来,仍然是0,所以24 的sets数是0;当发现3 能被24整除时,24的个数又增加了此时8的sets数,是1,而此时 8 的sets数是一,表示的是8=2*2*2,所以24=3*2*2*2这个set被计算了。当程序发现4可以被24整除时,找6,6=2*3在3能被6整除时已经成为1了,所以24=4*2*3这个set被计算在内了。到这是没有结束,24=4*6=6*4被认为是不一样的。6能被24整除,且此时4的sets已经被算出来了,4=2*2=4*1,所以24=6*2*2=6*4被考虑在内了,这时24的个数为4个了……以此分析可以发现24的所以因式可以不重不漏地考虑在内。以下是算出24的sets的intermedia results。当i=2是,2的所有sets数必然会被算出,i=n是,n的sets数也会被算出来,……
i=2 0 1 1 0 1 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0
i=3 0 1 1 1 1 0 1 0 1 1 0 0 1 0 0 0 1 0 1 0 0 0 0 0 1
i=4 0 1 1 1 2 0 1 0 2 1 0 0 2 0 0 0 3 0 1 0 0 0 0 0 2
i=5 0 1 1 1 2 1 1 0 2 1 1 0 2 0 0 1 3 0 1 0 2 0 0 0 2
i=6 0 1 1 1 2 1 2 0 2 1 1 0 3 0 0 1 3 0 2 0 2 0 0 0 4
i=7 0 1 1 1 2 1 2 1 2 1 1 0 3 0 1 1 3 0 2 0 2 1 0 0 4
i=8 0 1 1 1 2 1 2 1 3 1 1 0 3 0 1 1 4 0 2 0 2 1 0 0 5
i=9 0 1 1 1 2 1 2 1 3 2 1 0 3 0 1 1 4 0 3 0 2 1 0 0 5
i=10 0 1 1 1 2 1 2 1 3 2 2 0 3 0 1 1 4 0 3 0 3 1 0 0 5
i=11 0 1 1 1 2 1 2 1 3 2 2 1 3 0 1 1 4 0 3 0 3 1 1 0 5
i=12 0 1 1 1 2 1 2 1 3 2 2 1 4 0 1 1 4 0 3 0 3 1 1 0 6
i=13 0 1 1 1 2 1 2 1 3 2 2 1 4 1 1 1 4 0 3 0 3 1 1 0 6
i=14 0 1 1 1 2 1 2 1 3 2 2 1 4 1 2 1 4 0 3 0 3 1 1 0 6
i=15 0 1 1 1 2 1 2 1 3 2 2 1 4 1 2 2 4 0 3 0 3 1 1 0 6
i=16 0 1 1 1 2 1 2 1 3 2 2 1 4 1 2 2 5 0 3 0 3 1 1 0 6
i=17 0 1 1 1 2 1 2 1 3 2 2 1 4 1 2 2 5 1 3 0 3 1 1 0 6
i=18 0 1 1 1 2 1 2 1 3 2 2 1 4 1 2 2 5 1 4 0 3 1 1 0 6
i=19 0 1 1 1 2 1 2 1 3 2 2 1 4 1 2 2 5 1 4 1 3 1 1 0 6
i=20 0 1 1 1 2 1 2 1 3 2 2 1 4 1 2 2 5 1 4 1 4 1 1 0 6
i=21 0 1 1 1 2 1 2 1 3 2 2 1 4 1 2 2 5 1 4 1 4 2 1 0 6
i=22 0 1 1 1 2 1 2 1 3 2 2 1 4 1 2 2 5 1 4 1 4 2 2 0 6
i=23 0 1 1 1 2 1 2 1 3 2 2 1 4 1 2 2 5 1 4 1 4 2 2 1 6
i=24 0 1 1 1 2 1 2 1 3 2 2 1 4 1 2 2 5 1 4 1 4 2 2 1 7
其实我只是(不完全)证明了这个算法的正确性,怎么想的,还是问“不告诉你”吧。:D
我个人有个算法,recursive的算法,速度不够快,会超时,所以不介绍了……[duck (2-18 19:52, Long long ago)]
[ 传统版 |
sForum ][登录后回复]3楼
(引用 我行故我:嘿嘿。。duck 大哥也没有这么强吧)咳咳……我都说过了是请教高人的了
不要这么直白吧……
[duck (2-18 19:55, Long long ago)]
[ 传统版 |
sForum ][登录后回复]4楼
(引用 duck:咳咳……我都说过了是请教高人的了
不要这么直白吧……
):P大哥误会了!
其实我对大哥的崇敬之情
有如滔滔江水,.....;
又如黄河泛滥......
muhahahaha[我行故我 (2-18 20:00, Long long ago)]
[ 传统版 |
sForum ][登录后回复]5楼
(引用 duck::-)让你失望了,这个算法不是我想出来的。我也很佩服想出来这个算法的人。 个人觉得这道题目很没有意思(这时候,“不告诉你”跳出来说,...)非常感谢!另外怎样才能让“不告诉你”“破例“告诉我们呢?[cigar (2-18 20:26, Long long ago)] [ 传统版 | sForum ][登录后回复]6楼
(引用 duck:咳咳……我都说过了是请教高人的了 不要这么直白吧…… )高手就是 ...周大哥吧 ... 嘻嘻 ..[冰月 (2-19 10:01, Long long ago)] [ 传统版 | sForum ][登录后回复]7楼
(引用 cigar:非常感谢!另外怎样才能让“不告诉你”“破例“告诉我们呢?)[INFORMATION]这个…… 等过了deadline吧……:)[不告诉你 (2-19 19:17, Long long ago)] [ 传统版 | sForum ][登录后回复]8楼