-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path902.hs
More file actions
24 lines (18 loc) · 729 Bytes
/
902.hs
File metadata and controls
24 lines (18 loc) · 729 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
{-# OPTIONS_GHC -O3 #-}
{-# LANGUAGE BangPatterns #-}
import Data.Array
-- import Data.Array.Base (unsafeAt)
import Debug.Trace
import Control.Applicative
values = takeWhile (<= 5.208) $ scanl (+) 0 [1/x | x <- [2..]]
l = length values
lArr = listArray (0,l-1) values
search v = binSearch 0 (l-1)
where binSearch l h | lArr ! idx > v && lArr ! (idx -1) < v = idx
| lArr ! idx > v && lArr ! (idx -1) > v = binSearch l idx
| lArr ! idx < v = binSearch idx h
where idx = (l + ((h - l) `div` 2))
main = do
ls <- takeWhile (/= "0.00") . lines <$> getContents
mapM_ (putStrLn . (++ " card(s)") . show . search . read) ls
return ()