(defun main (&rest argv) (declare (ignorable argv)) (let* ((a (read)) (b (read)) (res (if (= a b) 2 1))) (loop while (not (zerop (+ a b))) when (not (zerop (logand (+ a b) 1))) do (setf res (* res (* 2 (logand b 1)))) do (setf a (ash a -1) b (ash b -1))) (format t "~d~%" (floor res 2)))) (main)