20 lines
1014 B
Scheme
20 lines
1014 B
Scheme
(define (sqr x) (* x x))
|
|
(define (pow x y z)
|
|
(cond ((= y 1) (remainder x z))
|
|
((= (remainder y 2) 0) (remainder (sqr (pow x (quotient y 2) z)) z))
|
|
(else (remainder (* (sqr (pow x (quotient y 2) z)) x) z))))
|
|
(with-output-to-file "REMAINDER.TXT" (lambda () (for-each
|
|
(lambda (l)
|
|
(let* ((a (integer-expt 10 (string-length (number->string (list-ref l 0)))))
|
|
(m (* (list-ref l 2) (- a 1)))
|
|
(p (pow a (list-ref l 1) m)))
|
|
(display (quotient (remainder (* (list-ref l 0) (- p 1)) m) (- a 1)))
|
|
(newline)))
|
|
'((12 3 8) (2 15 17) (456 6 1296) (1234 100 9) (11223344 1000000 142857)
|
|
(55667788 10000000 1000000007) (1357 24682468 999999999)
|
|
(24680 1357913579 777777777) (998 1000000000000 999)
|
|
(1234 11111111111111 30) (1 222222222222222 123456789)
|
|
(2016 666666666666666 8888888888) (11223344 555666777888999 1357924680)
|
|
(999999999999999967 999999999999999877 999999999999999989)
|
|
(123456789123456789 123456789123456789 987654321123456789)))))
|