blob: 6c014095492cec07da35620ca4cfeb489b7d3ea8 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
(define (recur-cycle n)
(define (div_2_5 x)
(cond
((= (remainder x 2) 0)
(div_2_5 (/ x 2)))
((= (remainder x 5) 0)
(div_2_5 (/ x 5)))
(else x)))
(define (try-iter m r)
(if (= r 1)
m
(try-iter (+ m 1) (remainder (* r 10) n))))
(if (= (div_2_5 n) n)
(if (= n 1)
0
(try-iter 1 (remainder 10 n)))
(recur-cycle (div_2_5 n))))
(define (longest upper)
(define (try-iter n ans anscycle)
(if (> n upper)
ans
(let ((m (recur-cycle n)))
(if (> m anscycle)
(try-iter (+ n 1) n m)
(try-iter (+ n 1) ans anscycle)))))
(try-iter 1 1 0))
(display (longest (read)))
(newline)
|