Submission #11693643
Source Code Expand
import Control.Monad
import qualified Data.Array.IO as IO
import Data.Bits
import qualified Data.ByteString.Char8 as BS
import Data.Char
import Data.Foldable
import Data.Maybe
import qualified Data.Sequence as Seq
import qualified Data.Vector.Unboxed as V
import qualified Data.Vector.Unboxed.Mutable as VM
readInt = fst . fromJust . BS.readInt
getInt = readInt <$> BS.getLine
primeFactorization :: Int -> [(Int, Int)]
primeFactorization x = pfact x 2 0 []
where
sr = floor $ sqrt $ fromIntegral x
pfact n i r fs | i > sr = if n > sr then (n,1):fs else fs
| otherwise =
if n `mod` i == 0
then pfact (n `div` i) i (r+1) fs
else pfact n (i+1) 0 (if r > 0 then (i,r):fs else fs)
main = do
n <- getInt
let p = 10^9 + 7 :: Int
sr = floor $ sqrt $ fromIntegral n
v <- VM.new (n+1)
VM.set v (0::Int)
forM_ [1..n] $ \x ->
forM_ (primeFactorization x) $ \(i, r) -> do
t <- VM.read v i
VM.write v i (t+r)
VM.write v 0 (1::Int)
forM_ [1..n] $ \i -> do
res <- VM.read v 0
t <- VM.read v i
VM.write v 0 (res * (t + 1) `mod` p)
ans <- VM.read v 0
print ans
Submission Info
| Submission Time | |
|---|---|
| Task | C - Factors of Factorial |
| User | unnohideyuki |
| Language | Haskell (GHC 7.10.3) |
| Score | 300 |
| Code Size | 1362 Byte |
| Status | AC |
| Exec Time | 2 ms |
| Memory | 892 KiB |
Judge Result
| Set Name | Sample | All | ||||
|---|---|---|---|---|---|---|
| Score / Max Score | 0 / 0 | 300 / 300 | ||||
| Status |
|
|
| Set Name | Test Cases |
|---|---|
| Sample | sample_01.txt, sample_02.txt, sample_03.txt |
| All | sample_01.txt, sample_02.txt, sample_03.txt, subtask_1_certain_01.txt, subtask_1_certain_02.txt, subtask_1_certain_03.txt, subtask_1_certain_04.txt, subtask_1_rand_01.txt, subtask_1_rand_02.txt, subtask_1_rand_03.txt |
| Case Name | Status | Exec Time | Memory |
|---|---|---|---|
| sample_01.txt | AC | 1 ms | 380 KiB |
| sample_02.txt | AC | 1 ms | 380 KiB |
| sample_03.txt | AC | 2 ms | 892 KiB |
| subtask_1_certain_01.txt | AC | 1 ms | 380 KiB |
| subtask_1_certain_02.txt | AC | 1 ms | 380 KiB |
| subtask_1_certain_03.txt | AC | 2 ms | 892 KiB |
| subtask_1_certain_04.txt | AC | 2 ms | 892 KiB |
| subtask_1_rand_01.txt | AC | 2 ms | 764 KiB |
| subtask_1_rand_02.txt | AC | 2 ms | 892 KiB |
| subtask_1_rand_03.txt | AC | 2 ms | 764 KiB |