From 18419b2b07ffbc1f390c7309ca78cfc7820411eb Mon Sep 17 00:00:00 2001 From: Nguyễn Gia Phong Date: Wed, 23 May 2018 21:46:57 +0700 Subject: Thêm đề bảng C Tin học trẻ Hà Nội XXIII MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- THT/C/TP-2018/func.scm | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 THT/C/TP-2018/func.scm (limited to 'THT/C/TP-2018/func.scm') diff --git a/THT/C/TP-2018/func.scm b/THT/C/TP-2018/func.scm new file mode 100644 index 0000000..a7d0af5 --- /dev/null +++ b/THT/C/TP-2018/func.scm @@ -0,0 +1,35 @@ +(define (func k r p q m) + (define (func-iter a b c d count) + (display (cons a b)) + (newline) + (cond ((= count 0) (cons (remainder b m) + (remainder a m))) + ((even? count) (func-iter (remainder a m) + (remainder b m) + (remainder (+ (* c c) (* d d)) m) + (remainder (+ (* 2 c d) (* d d r)) m) + (/ count 2))) + (else (func-iter (remainder (+ (* b d) (* a d r) (* a c)) m) + (remainder (+ (* b c) (* a d)) m) + (remainder c m) + (remainder d m) + (- count 1))))) + (let ((g (gcd p q))) + (func-iter (/ q g) (/ p g) 0 1 (- k 1)))) + +(define (iter) + (let* ((k (read)) + (r (read)) + (p (read)) + (q (read)) + (m (read))) + (if (not (eof-object? m)) + (let ((c (func k r p q m))) + (display (car c)) + (display " ") + (display (cdr c)) + (newline) + (iter))))) + +(with-input-from-file "FUNC.INP" + (lambda () (with-output-to-file "FUNC.OUT" iter))) -- cgit 1.4.1