; curious numbers
(define (expm b e m)
(define (m* x y) (modulo (* x y) m))
(cond ((zero? e) 1)
((even? e) (expm (m* b b) (/ e 2) m))
(else (m* b (expm (m* b b) (/ (- e 1) 2) m)))))
(define (curious n)
(let ((xs (list 1)))
(do ((i 1 (+ i 1))) ((= i n) (apply + xs))
(let* ((x (expm 5 (expt 2 i) (expt 10 i)))
(y (- (expt 10 i) x -1)))
(display i) (display ": ")
(display x) (display " ")
(display y) (newline)
(when (not (member x xs))
(set! xs (cons x xs)))
(when (not (member y xs))
(set! xs (cons y xs)))))))
(display (curious 20)) (newline)
OyBjdXJpb3VzIG51bWJlcnMKCihkZWZpbmUgKGV4cG0gYiBlIG0pCiAgKGRlZmluZSAobSogeCB5KSAobW9kdWxvICgqIHggeSkgbSkpCiAgKGNvbmQgKCh6ZXJvPyBlKSAxKQogICAgICAgICgoZXZlbj8gZSkgKGV4cG0gKG0qIGIgYikgKC8gZSAyKSBtKSkKICAgICAgICAoZWxzZSAobSogYiAoZXhwbSAobSogYiBiKSAoLyAoLSBlIDEpIDIpIG0pKSkpKQoKKGRlZmluZSAoY3VyaW91cyBuKQogIChsZXQgKCh4cyAobGlzdCAxKSkpCiAgICAoZG8gKChpIDEgKCsgaSAxKSkpICgoPSBpIG4pIChhcHBseSArIHhzKSkKICAgICAgKGxldCogKCh4IChleHBtIDUgKGV4cHQgMiBpKSAoZXhwdCAxMCBpKSkpCiAgICAgICAgICAgICAoeSAoLSAoZXhwdCAxMCBpKSB4IC0xKSkpCiAgICAgICAgKGRpc3BsYXkgaSkgKGRpc3BsYXkgIjogIikKICAgICAgICAoZGlzcGxheSB4KSAoZGlzcGxheSAiICIpCiAgICAgICAgKGRpc3BsYXkgeSkgKG5ld2xpbmUpCiAgICAgICAgKHdoZW4gKG5vdCAobWVtYmVyIHggeHMpKQogICAgICAgICAgKHNldCEgeHMgKGNvbnMgeCB4cykpKQogICAgICAgICh3aGVuIChub3QgKG1lbWJlciB5IHhzKSkKICAgICAgICAgIChzZXQhIHhzIChjb25zIHkgeHMpKSkpKSkpCgooZGlzcGxheSAoY3VyaW91cyAyMCkpIChuZXdsaW5lKQ==