※ 引述《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