Submission #10728035
Source Code Expand
import Control.Monad
import qualified Data.ByteString.Char8 as BS
import Data.Char
import Data.Maybe
import qualified Data.Vector.Unboxed.Mutable as VM
readInt = fst . fromJust . BS.readInt
readIntList = map readInt . BS.words
getInt = readInt <$> BS.getLine
getIntList = readIntList <$> BS.getLine
main = do
[n, p] <- getIntList
s <- BS.getLine
v <- VM.new p
VM.set v (0::Int)
VM.write v 0 1 -- U0 `mod` p == 0
let solve25 i a | i > n = print a
| otherwise = do
let c = BS.index s (n-i)
di = ord c - ord '0'
x = if di `mod` p == 0 then n - i + 1 else 0
solve25 (i+1) (a+x)
solve i a md m10 | i > n = print a
| otherwise = do
let c = BS.index s (n-i)
di = ord c - ord '0'
md' = (md + di * m10) `mod` p
m10' = (m10 * 10) `mod` p
y <- VM.read v md'
VM.write v md' (y+1)
solve (i+1) (a+y) md' m10'
if 10 `mod` p == 0
then solve25 1 0
else solve 1 0 0 1
Submission Info
| Submission Time | |
|---|---|
| Task | E - Divisible Substring |
| User | unnohideyuki |
| Language | Haskell (GHC 7.10.3) |
| Score | 500 |
| Code Size | 1380 Byte |
| Status | AC |
| Exec Time | 48 ms |
| Memory | 21884 KiB |
Judge Result
| Set Name | Sample | All | ||||
|---|---|---|---|---|---|---|
| Score / Max Score | 0 / 0 | 500 / 500 | ||||
| Status |
|
|
| Set Name | Test Cases |
|---|---|
| Sample | s1.txt, s2.txt, s3.txt |
| All | 01.txt, 02.txt, 03.txt, 04.txt, 05.txt, 06.txt, 07.txt, 08.txt, 09.txt, 10.txt, 11.txt, 12.txt, 13.txt, 14.txt, 15.txt, 16.txt, 17.txt, 18.txt, 19.txt, 20.txt, 21.txt, 22.txt, 23.txt, 24.txt, 25.txt, 26.txt, 27.txt, 28.txt, 29.txt, 30.txt, 31.txt, 32.txt, 33.txt, 34.txt, 35.txt, 36.txt, 37.txt, 38.txt, 39.txt, 40.txt, 41.txt, s1.txt, s2.txt, s3.txt |
| Case Name | Status | Exec Time | Memory |
|---|---|---|---|
| 01.txt | AC | 1 ms | 508 KiB |
| 02.txt | AC | 1 ms | 380 KiB |
| 03.txt | AC | 1 ms | 380 KiB |
| 04.txt | AC | 1 ms | 380 KiB |
| 05.txt | AC | 1 ms | 380 KiB |
| 06.txt | AC | 2 ms | 764 KiB |
| 07.txt | AC | 2 ms | 764 KiB |
| 08.txt | AC | 2 ms | 892 KiB |
| 09.txt | AC | 2 ms | 764 KiB |
| 10.txt | AC | 2 ms | 764 KiB |
| 11.txt | AC | 1 ms | 508 KiB |
| 12.txt | AC | 1 ms | 636 KiB |
| 13.txt | AC | 2 ms | 636 KiB |
| 14.txt | AC | 2 ms | 764 KiB |
| 15.txt | AC | 1 ms | 508 KiB |
| 16.txt | AC | 2 ms | 764 KiB |
| 17.txt | AC | 2 ms | 764 KiB |
| 18.txt | AC | 2 ms | 764 KiB |
| 19.txt | AC | 2 ms | 764 KiB |
| 20.txt | AC | 2 ms | 764 KiB |
| 21.txt | AC | 10 ms | 1404 KiB |
| 22.txt | AC | 10 ms | 1276 KiB |
| 23.txt | AC | 10 ms | 1404 KiB |
| 24.txt | AC | 10 ms | 1276 KiB |
| 25.txt | AC | 10 ms | 1276 KiB |
| 26.txt | AC | 47 ms | 21884 KiB |
| 27.txt | AC | 47 ms | 21884 KiB |
| 28.txt | AC | 48 ms | 21884 KiB |
| 29.txt | AC | 47 ms | 21884 KiB |
| 30.txt | AC | 47 ms | 21884 KiB |
| 31.txt | AC | 47 ms | 21884 KiB |
| 32.txt | AC | 47 ms | 21884 KiB |
| 33.txt | AC | 10 ms | 1276 KiB |
| 34.txt | AC | 47 ms | 21884 KiB |
| 35.txt | AC | 10 ms | 1276 KiB |
| 36.txt | AC | 10 ms | 1404 KiB |
| 37.txt | AC | 10 ms | 1404 KiB |
| 38.txt | AC | 10 ms | 1404 KiB |
| 39.txt | AC | 10 ms | 1404 KiB |
| 40.txt | AC | 10 ms | 1404 KiB |
| 41.txt | AC | 1 ms | 508 KiB |
| s1.txt | AC | 1 ms | 380 KiB |
| s2.txt | AC | 1 ms | 380 KiB |
| s3.txt | AC | 1 ms | 380 KiB |