結果
問題 | No.300 平方数 |
ユーザー | はむ吉🐹 |
提出日時 | 2016-06-01 22:05:39 |
言語 | Haskell (9.8.2) |
結果 |
CE
(最新)
AC
(最初)
|
実行時間 | - |
コード長 | 1,077 bytes |
コンパイル時間 | 158 ms |
コンパイル使用メモリ | 149,120 KB |
最終ジャッジ日時 | 2024-11-15 04:44:21 |
合計ジャッジ時間 | 880 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge4 |
(要ログイン)
コンパイルエラー時のメッセージ・ソースコードは、提出者また管理者しか表示できないようにしております。(リジャッジ後のコンパイルエラーは公開されます)
ただし、clay言語の場合は開発者のデバッグのため、公開されます。
ただし、clay言語の場合は開発者のデバッグのため、公開されます。
コンパイルメッセージ
Loaded package environment from /home/judge/.ghc/x86_64-linux-9.8.2/environments/default [1 of 2] Compiling Main ( Main.hs, Main.o ) Main.hs:2:1: error: [GHC-87110] Could not load module ‘Data.Map.Strict’. It is a member of the hidden package ‘containers-0.6.8’. Use -v to see a list of the files searched for. | 2 | import qualified Data.Map.Strict as M | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ソースコード
import Data.Int (Int64) import qualified Data.Map.Strict as M type Count = Int type Counter a = M.Map a Count addElement :: Ord a => a -> Counter a -> Counter a addElement x = M.insertWith (+) x 1 countElements :: Ord a => [a] -> Counter a countElements = foldr addElement M.empty primes :: Integral a => [a] primes = [2, 3, 5] ++ sieve 5 7 (drop 2 primes) where sieve m s (p : ps) = [n | n <- ns, gcd m n == 1] ++ sieve (m * p) (p * p) ps where ns = [x + y | x <- [s, s + 6 .. p * p - 2], y <- [0, 4]] sieve _ _ [] = [] factorize :: Integral a => a -> [a] factorize 1 = [] factorize x = factorize' x primes where factorize' n ps@(p : pr) | p * p > n = [n] | m == 0 = p : factorize' d ps | otherwise = factorize' n pr where (d, m) = divMod n p factorize' _ [] = [] solve :: Integral a => a -> a solve x = product . fmap fst . M.toList $ M.filter odd ctr where ctr = countElements $ factorize x main :: IO () main = print . solve =<< (readLn :: IO Int64)