作者sophialiege (别忘了)
看板ACMCLUB
标题Re: 请问大家做了几题?
时间Mon Mar 21 13:04:10 2005
※ 引述《Kuster (克斯特)》之铭言:
: : csod(100)
: : times| 2| 3| 4| 5| 6| 7| 8| 9|10|11|12|14|16|20|25|33|50|
: : ---------------------------------------------------------
: : range|50|33|25|20|16|14|12|11|10| 9| 8| 7| 6| 5| 4| 3| 2|
: : 表格说明
: : range 100-51 contribute nothing
: : 50-34 contribute 2-1 times
: : 33-26 contribite 3-1 times
: : ................
: : 值得注意的是在 sqrt(100)(也就是10)的左右两端是点对称
: 观察这个表格
: 似乎两头同时进行会比较好
: 但是说到程式,我怎麽写都还是会遇到问题,解出来的答案都太大
: 但是单方向的从头往後算又太慢
: 能否请您说说看您的程式大概是怎麽写的呢?
我没有实际去写过
不过如果要我写的话,我会写两个loop
如果要算csod(k),那麽第一个loop算出这个表的2~sqrt(k)[看上面]部份
并存取下来
接着第二个loop读取第一个loop的结果再从sqrt(k)~2[看下面]算一遍
算csod(k)的整个复杂度是 2*sqrt(k),应该不算大
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.112.7.59