From 7d19f480637e9e880b98dabfbcf8e885b0a2d3b9 Mon Sep 17 00:00:00 2001 From: Raphael McSinyx Date: Tue, 21 Feb 2017 21:09:39 +0700 Subject: Update others/volume1 --- others/volume1/078.pas | 60 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 others/volume1/078.pas (limited to 'others/volume1/078.pas') diff --git a/others/volume1/078.pas b/others/volume1/078.pas new file mode 100644 index 0000000..a202c6a --- /dev/null +++ b/others/volume1/078.pas @@ -0,0 +1,60 @@ +uses clib; + +var + n, i, j: int16; + m: int32 = 0; + a, b: array of int16; + +procedure sort(l, h: int32); + var + i, j, k: int32; + tmp: int16; + begin + i := l; + j := h; + k := (l + h) div 2; + repeat + while a[i] * b[k] < a[k] * b[i] do + inc(i); + while a[j] * b[k] > a[k] * b[j] do + dec(j); + if i <= j then + begin + tmp := a[i]; + a[i] := a[j]; + a[j] := tmp; + tmp := b[i]; + b[i] := b[j]; + b[j] := tmp; + inc(i); + dec(j) + end + until i > j; + + if l < j then + sort(l, j); + if i < h then + sort(i, h) + end; + +begin + readln(n); + setlength(a, m); + setlength(b, m); + for i := 1 to n do + for j := 1 to n do + if gcd(i, j) = 1 then + begin + inc(m); + setlength(a, m); + a[m - 1] := i; + setlength(b, m); + b[m - 1] := j + end; + sort(0, m - 1); + writeln(m); + repeat + dec(m); + writeln(a[m], ' ', b[m]) + until m = 0; +end. -- cgit 1.4.1