leque #7667(2008/09/18 00:08 GMT) [ Scheme ] Rating0/0=0.00
出題時に考えていた答。平衡木を使うので、求める数の個数を n としたとき、時間計算量は O(log n)、空間計算量は O(n) のはず。
see: Gauche ユーザリファレンス: 6.14 ツリーマップ
1 2 3 4 5 6 7 8 9 10 11 12 13
(define (main args) (let ((tm (alist->tree-map '((1 . #t)) = <))) (let loop ((n (string->number (cadr args))) (rs '())) (cond ((zero? n) (print (reverse rs)) 0) (else (let ((m (car (tree-map-pop-min! tm)))) (for-each (cut tree-map-put! tm <> #t) (map (cute * m <>) '(2 3 5))) (loop (- n 1) (cons m rs))))))))
Rating0/0=0.00-0+
1 reply [ reply ]
nobsun #7669(2008/09/18 00:38 GMT) Rating0/0=0.00
求める数の個数 n なのに 時間計算量 O(log n) というのがよく判らないんです。 素人考えだと、最低 O(n)はかかるような気がするんですけど、解説をお願いできますでしょうか
[ reply ]
leque
#7667()
[
Scheme
]
Rating0/0=0.00
出題時に考えていた答。平衡木を使うので、求める数の個数を n としたとき、時間計算量は O(log n)、空間計算量は O(n) のはず。
see: Gauche ユーザリファレンス: 6.14 ツリーマップ
Rating0/0=0.00-0+
1 reply [ reply ]