Submission #6244246
Source Code Expand
;; -*- coding: utf-8 -*-
(eval-when (:compile-toplevel :load-toplevel :execute)
(defparameter OPT
#+swank '(optimize (speed 3) (safety 2))
#-swank '(optimize (speed 3) (safety 0) (debug 0)))
#+swank (progn (ql:quickload '(:cl-debug-print :fiveam))
(shadow :run)
(use-package :fiveam)))
#+swank (cl-syntax:use-syntax cl-debug-print:debug-print-syntax)
;; BEGIN_INSERTED_CONTENTS
;; -*- coding:utf-8 -*-
(defstruct (queue (:constructor make-queue
(&optional list &aux (tail (last list)))))
(list nil :type list)
(tail nil :type (or null (cons t null))))
(declaim (inline enqueue))
(defun enqueue (obj queue)
(symbol-macrolet ((list (queue-list queue))
(tail (queue-tail queue)))
(if (null list)
(setf tail (list obj)
list tail)
(setf (cdr tail) (list obj)
tail (cdr tail))))
queue)
(declaim (inline dequeue))
(defun dequeue (queue)
(pop (queue-list queue)))
(declaim (inline enqueue-front))
(defun enqueue-front (obj queue)
(symbol-macrolet ((list (queue-list queue))
(tail (queue-tail queue)))
(if (null list)
(setf tail (list obj)
list tail)
(push obj list))
queue))
(defmacro dbg (&rest forms)
#+swank
(if (= (length forms) 1)
`(format *error-output* "~A => ~A~%" ',(car forms) ,(car forms))
`(format *error-output* "~A => ~A~%" ',forms `(,,@forms)))
#-swank (declare (ignore forms)))
(defmacro define-int-types (&rest bits)
`(progn
,@(mapcar (lambda (b) `(deftype ,(intern (format nil "UINT~A" b)) () '(unsigned-byte ,b))) bits)
,@(mapcar (lambda (b) `(deftype ,(intern (format nil "INT~A" b)) () '(signed-byte ,b))) bits)))
(define-int-types 2 4 7 8 15 16 31 32 62 63 64)
(defmacro println (obj &optional (stream '*standard-output*))
`(let ((*read-default-float-format* 'double-float))
(prog1 (princ ,obj ,stream) (terpri ,stream))))
(defconstant +mod+ 1000000007)
;; Body
(defun calc-order (k)
(let* ((power10-table (make-array k :element-type 'bit :initial-element 0)))
(declare (uint32 k))
(loop for x = 1 then (mod (* x 10) k)
until (= 1 (aref power10-table x))
do (setf (aref power10-table x) 1))
(count 1 power10-table)))
(defun main ()
(declare #.OPT)
(let* ((k (read))
(queue (make-queue))
(power10-table (make-array k :element-type 'bit :initial-element 0))
(dist-table (make-array k :element-type 'uint32 :initial-element #xffffffff)))
(declare (uint32 k))
(loop for x = 1 then (mod (* x 10) k)
until (= 1 (aref power10-table x))
do (setf (aref power10-table x) 1
(aref dist-table x) 1)
(enqueue x queue)
(when (zerop x)
(println 1)
(return-from main)))
(let ((delta-vec (make-array (count 1 power10-table) :element-type 'uint32))
(index 0))
(dotimes (x k)
(when (= 1 (aref power10-table x))
(setf (aref delta-vec index) x)
(incf index)))
(loop for x of-type uint32 = (dequeue queue)
do (sb-int:dovector (delta delta-vec)
(let ((dest (mod (+ delta x) k)))
(when (zerop dest)
(println (+ 1 (aref dist-table x)))
(return-from main))
(when (= #xffffffff (aref dist-table dest))
(setf (aref dist-table dest)
(+ 1 (aref dist-table x)))
(enqueue dest queue))))))))
#-swank(main)
Submission Info
| Submission Time | |
|---|---|
| Task | D - Small Multiple |
| User | sansaqua |
| Language | Common Lisp (SBCL 1.1.14) |
| Score | 0 |
| Code Size | 3741 Byte |
| Status | TLE |
| Exec Time | 2104 ms |
| Memory | 29792 KiB |
Judge Result
| Set Name | Sample | All | ||||||
|---|---|---|---|---|---|---|---|---|
| Score / Max Score | 0 / 0 | 0 / 700 | ||||||
| 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, 42.txt, 43.txt, 44.txt, 45.txt, 46.txt, 47.txt, 48.txt, 49.txt, 50.txt, 51.txt, 52.txt, 53.txt, 54.txt, 55.txt, 56.txt, 57.txt, 58.txt, 59.txt, 60.txt, 61.txt, 62.txt, 63.txt, 64.txt, s1.txt, s2.txt, s3.txt |
| Case Name | Status | Exec Time | Memory |
|---|---|---|---|
| 01.txt | AC | 271 ms | 29792 KiB |
| 02.txt | AC | 88 ms | 16868 KiB |
| 03.txt | AC | 88 ms | 16868 KiB |
| 04.txt | AC | 89 ms | 16868 KiB |
| 05.txt | AC | 88 ms | 16868 KiB |
| 06.txt | AC | 89 ms | 16868 KiB |
| 07.txt | AC | 88 ms | 16868 KiB |
| 08.txt | AC | 88 ms | 16868 KiB |
| 09.txt | AC | 88 ms | 16872 KiB |
| 10.txt | AC | 88 ms | 16868 KiB |
| 11.txt | AC | 88 ms | 16872 KiB |
| 12.txt | AC | 88 ms | 16864 KiB |
| 13.txt | AC | 90 ms | 16868 KiB |
| 14.txt | AC | 89 ms | 16864 KiB |
| 15.txt | AC | 89 ms | 16864 KiB |
| 16.txt | AC | 88 ms | 16868 KiB |
| 17.txt | AC | 88 ms | 16868 KiB |
| 18.txt | AC | 90 ms | 16868 KiB |
| 19.txt | AC | 88 ms | 16864 KiB |
| 20.txt | AC | 88 ms | 16864 KiB |
| 21.txt | AC | 90 ms | 18916 KiB |
| 22.txt | AC | 97 ms | 18916 KiB |
| 23.txt | AC | 102 ms | 18916 KiB |
| 24.txt | AC | 784 ms | 18916 KiB |
| 25.txt | AC | 147 ms | 18916 KiB |
| 26.txt | AC | 95 ms | 18912 KiB |
| 27.txt | TLE | 2104 ms | 18920 KiB |
| 28.txt | AC | 1462 ms | 18912 KiB |
| 29.txt | AC | 1712 ms | 18920 KiB |
| 30.txt | TLE | 2104 ms | 18920 KiB |
| 31.txt | AC | 88 ms | 16864 KiB |
| 32.txt | AC | 89 ms | 16872 KiB |
| 33.txt | AC | 91 ms | 18912 KiB |
| 34.txt | AC | 89 ms | 18912 KiB |
| 35.txt | AC | 467 ms | 18916 KiB |
| 36.txt | AC | 147 ms | 18920 KiB |
| 37.txt | AC | 117 ms | 18920 KiB |
| 38.txt | AC | 106 ms | 18912 KiB |
| 39.txt | AC | 162 ms | 18916 KiB |
| 40.txt | AC | 89 ms | 16864 KiB |
| 41.txt | AC | 97 ms | 18916 KiB |
| 42.txt | AC | 908 ms | 18916 KiB |
| 43.txt | AC | 94 ms | 18916 KiB |
| 44.txt | AC | 88 ms | 16868 KiB |
| 45.txt | AC | 95 ms | 18912 KiB |
| 46.txt | AC | 192 ms | 18920 KiB |
| 47.txt | AC | 106 ms | 16868 KiB |
| 48.txt | AC | 1854 ms | 18920 KiB |
| 49.txt | AC | 119 ms | 18920 KiB |
| 50.txt | AC | 101 ms | 18916 KiB |
| 51.txt | AC | 92 ms | 18916 KiB |
| 52.txt | AC | 95 ms | 18920 KiB |
| 53.txt | AC | 172 ms | 18916 KiB |
| 54.txt | AC | 98 ms | 18916 KiB |
| 55.txt | AC | 97 ms | 18916 KiB |
| 56.txt | AC | 97 ms | 18916 KiB |
| 57.txt | AC | 137 ms | 18912 KiB |
| 58.txt | AC | 157 ms | 18920 KiB |
| 59.txt | AC | 339 ms | 18920 KiB |
| 60.txt | AC | 114 ms | 18916 KiB |
| 61.txt | AC | 91 ms | 18920 KiB |
| 62.txt | AC | 92 ms | 18916 KiB |
| 63.txt | AC | 97 ms | 18916 KiB |
| 64.txt | AC | 96 ms | 18916 KiB |
| s1.txt | AC | 89 ms | 16868 KiB |
| s2.txt | AC | 89 ms | 16868 KiB |
| s3.txt | AC | 96 ms | 18912 KiB |