Project Euler 解答

Project Euler Problem 044

Project Euler Problem 044

import qualified Data.IntSet as Set -- 逆関数:(sqrt(24*n+1)+1)`quot`6 pnl :: [Integer] pnl = map (\n -> n*(3*n-1) `quot` 2) [1..] pn :: Int -> Integer pn n = pnl!!n sub :: [Integer] sub = take 3000 pnl ispenta :: Integer -> Bool ispenta n = r - (fromIntegral $ floor r) < 1e-5 where r = (sqrt((fromIntegral n)*24+1.0)+1.0)/6.0 ans :: [(Integer, Integer)] ans = [(k,j) | k<-sub,j<-sub,let kj=k+j,k>j,ispenta kj,ispenta (k-j)] ans1 :: Integer ans1 = let r = head ans in fst r - snd r --5482660 main :: IO () main = print ans1

since 2013