2009-02-08
bignumライブラリの自作
- bignum同士の加減乗算(※除算は未実装)
- bignumに(signed)intを足したり引いたり掛けたり割ったり
- bignumと文字列との間の変換(基数指定可)
とか。とりあえず、昨日のMedium問題が解ける程度まで実装できたので晒します。
内部では65536進法で演算しています。2^32進法だと(bignum同士の加算や乗算をする際に)キャリーの計算が面倒くさいかなと思っての愚行です。
ご利用は計画的に。
2009-01-20
SRM360 Div1 Easy: SumOfSelectedCells
これは難しい。むしろ撃墜レースと考えるべき問題。実際Div1でも通過率34%と、500点問題を下回っている。
所要時間←→得点の計算
|→ Competing in a Rated Algorithm Competition, 12 Determining Score
以下Schemeですが
(define TT 75) (define (point MP time) (* MP (+ 0.3 (/ (* 0.7 TT TT) (+ (* 10 time time) (* TT TT)))))) (define (taken-time MP pt) (* TT (sqrt (/ (- (/ 0.7 (- (/ pt MP) 0.3)) 1) 10)))) (define (minsec min) (let* ([m (floor->exact min)] [s (floor->exact (* (- min m) 60))]) (format #t "~d'~d''\n" m s)))
所要時間(分)から得点を得る:
(point 250 3) => 247.24409448818895
得点から所要時間(分)を得る:
(taken-time 250 203.42) => 14.283829997874937 (minsec (taken-time 250 203.42)) => 14'17''