(defun check-p (x) (let* ((s (write-to-string x)) (s (if (string= (subseq s 0 1) "-") (subseq s 2) (subseq s 1)))) (and x (>= (length s) 2) (= (count #\0 s) (length s))))) (defun main (&rest argv) (declare (ignorable argv)) (let* ((a (read)) (b (read)) (a*b (* a b))) (cond ((and (check-p a) (check-p b)) (format t "~d~%" (floor a*b 10))) ((< (abs a*b) 100000000) (format t "~d~%" a*b)) (t (format t "E~%"))))) (main)