Submission #2761554


Source Code Expand

open Batteries

let digitList s = s |> String.to_list |> List.map (fun c -> Char.code c - 48)
let id x = x

let d = Scanf.scanf "%d\n" id
let n = Scanf.scanf "%s\n" id
let m = 1000000007

let f x n =
  let v, a = x in
  let a1 = Array.make d 0 in
  for i = 0 to d-1 do
    for j = 0 to 9 do
      a1.((i+j) mod d) <- (a1.((i+j) mod d) + a.(i)) mod m
    done
  done;
  for j = 0 to n-1 do
    a1.((v+j) mod d) <- (a1.((v+j) mod d) + 1) mod m
  done;
  ((v+n) mod d, a1)

let v, a = List.fold_left f (0, Array.make d 0) (digitList n)
let () = Printf.printf "%d\n" (a.(0)  + (if v == 0 then 1 else 0) - 1)

Submission Info

Submission Time
Task E - 数
User zehnpaard
Language OCaml (4.02.3)
Score 4
Code Size 626 Byte
Status AC
Exec Time 251 ms
Memory 3328 KB

Judge Result

Set Name All
Score / Max Score 4 / 4
Status
AC × 5
Set Name Test Cases
All 00, 01, 02, 90, 91
Case Name Status Exec Time Memory
00 AC 4 ms 1152 KB
01 AC 150 ms 3328 KB
02 AC 251 ms 3328 KB
90 AC 2 ms 1024 KB
91 AC 2 ms 1024 KB