diff options
-rw-r--r-- | README.md | 10 | ||||
-rw-r--r-- | others/volume1/112.scm | 12 | ||||
-rw-r--r-- | others/volume1/114.pas | 36 | ||||
-rw-r--r-- | others/volume1/118.pas | 18 | ||||
-rw-r--r-- | others/volume1/122.scm | 6 | ||||
-rw-r--r-- | others/volume1/README.md | 2 |
6 files changed, 82 insertions, 2 deletions
diff --git a/README.md b/README.md index 03a3bae..b4261e2 100644 --- a/README.md +++ b/README.md @@ -21,8 +21,14 @@ Bài tập luyện tập thi Olympic, học sinh giỏi Tin học, trong đó: `codeforces` sẽ chỉ có danh sách đường dẫn tới các đề bài. Đề bài sẽ được cập nhật dần. -Bài làm trên Pascal được được dịch thử trên FPC 2.6 trở lên, bài viết trên C -được dịch trên GCC 6 trở lên, bài làm trên Python chạy thử trên Python 3.5. +Phiên bản các trình dịch sử dụng test: + +| Ngôn ngữ | Trình dịch | +| -------- | ------------------ | +| C | GNU GCC 4.9+ | +| Pascal | Free Pascal 2.6.4+ | +| Python | Python 3.4+ | +| Scheme | GNU Guile 2.0.11+ | Tất cả các bài làm được phát hành theo giấy phép [GPLv3](LICENSE), cho phép người dùng chạy, nghiên cứu, chia sẻ và chỉnh sửa tự do. Các đề bài hầu như diff --git a/others/volume1/112.scm b/others/volume1/112.scm new file mode 100644 index 0000000..c03bfdc --- /dev/null +++ b/others/volume1/112.scm @@ -0,0 +1,12 @@ +(define (sqr x) (* x x)) +(define (distance n) + (let distance-iter ((hi (inexact->exact (truncate (sqrt n)))) (i 2)) + (cond ((= n 1) 0) + ((= i hi) 1) + ((= (remainder n i) 0) (begin (set! n (quotient n i)) + (+ (distance-iter hi i) 1))) + (else (distance-iter hi (+ i 1)))))) +(let loop ((a (read)) (b (read))) + (unless (eof-object? a) + (format #t "~a\n" (distance (quotient (* a b) (sqr (gcd a b))))) + (loop (read) (read)))) diff --git a/others/volume1/114.pas b/others/volume1/114.pas new file mode 100644 index 0000000..927a4af --- /dev/null +++ b/others/volume1/114.pas @@ -0,0 +1,36 @@ +var + m, n, i, j: int16; + h: array[0..1001, 0..1001] of int32; + count: int32 = 0; + +function stupid(x, y: int16): int8; + begin + if h[x][y] > h[x - 1][y] then + exit(0); + if h[x][y] > h[x + 1][y] then + exit(0); + if h[x][y] > h[x][y - 1] then + exit(0); + if h[x][y] > h[x][y + 1] then + exit(0); + stupid := 1 + end; + +begin + readln(m, n); + for i := 1 to m do + for j := 1 to n do + read(h[i][j]); + for i := 0 to m do + h[i][0] := 0; + for i := 1 to m + 1 do + h[i][n + 1] := 0; + for i := 0 to n do + h[0][j] := 0; + for i := 1 to n + 1 do + h[m + 1][i] := 0; + for i := 1 to m do + for j := 1 to n do + inc(count, stupid(i, j)); + writeln(count) +end. diff --git a/others/volume1/118.pas b/others/volume1/118.pas new file mode 100644 index 0000000..c8008e6 --- /dev/null +++ b/others/volume1/118.pas @@ -0,0 +1,18 @@ +var + n, i: uint16; + a: array of int64; + +begin + readln(n); + setlength(a, n); + for i := 0 to n - 1 do + read(a[i]); + for i := 1 to n - 2 do + if (a[i] < a[i - 1]) and + (a[i] < a[i + 1]) then + begin + dec(n); + a[i] := a[i - 1] + end; + writeln(length(a) - n) +end. diff --git a/others/volume1/122.scm b/others/volume1/122.scm new file mode 100644 index 0000000..63b1032 --- /dev/null +++ b/others/volume1/122.scm @@ -0,0 +1,6 @@ +(define (sqr x) (* x x)) +(let loop ((r (read))) + (unless (eof-object? r) + (let ((a (read)) (b (read))) + (display (if (< (sqr (* r 2)) (+ (sqr a) (sqr b))) "NO\n" "YES\n"))) + (loop (read)))) diff --git a/others/volume1/README.md b/others/volume1/README.md new file mode 100644 index 0000000..6f93607 --- /dev/null +++ b/others/volume1/README.md @@ -0,0 +1,2 @@ +Do giới hạn preview của Github khá hạn chế nên các để bài được giữ trong +[file PDF](README.md). |