aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRaphael McSinyx <vn.mcsinyx@gmail.com>2016-11-09 21:39:26 +0700
committerRaphael McSinyx <vn.mcsinyx@gmail.com>2016-11-09 23:10:54 +0700
commit10de10a507238f3be43dee304e057679b5bb2736 (patch)
tree748d8f04dda4aa9ae2b71ade67eb8a0dd543e262
parent94f49ef11037832a173d268ca932fe34cf78b472 (diff)
downloadcp-10de10a507238f3be43dee304e057679b5bb2736.tar.gz
Thêm đề TP 12 năm 2015-2016
-rw-r--r--12/TP-HN-2015/README.md83
-rw-r--r--12/TP-HN-2015/bai1.pas38
-rw-r--r--12/TP-HN-2015/bai2.pas54
3 files changed, 175 insertions, 0 deletions
diff --git a/12/TP-HN-2015/README.md b/12/TP-HN-2015/README.md
new file mode 100644
index 0000000..2ba87d2
--- /dev/null
+++ b/12/TP-HN-2015/README.md
@@ -0,0 +1,83 @@
+# KÌ THI CHỌN HỌC SINH GIỎI CẤP THÀNH PHỐ LỚP 12 NĂM HỌC 2015 - 2016
+
+SỞ GIÁO DỤC VÀ ĐÀO TẠO HÀ NỘI
+
+Môn thi: TIN HỌC
+
+Ngày thi: 02/10/2015
+
+Thời gian làm bài: 180 phút
+
+## Tổng quan bài thi
+
+| Bài | Tệp chương trình | Tệp dữ liệu vào | Tệp kết quả ra | Thời gian |
+| :---: | :--------------: | :-------------: | :------------: | :-------: |
+| 1 | BAI1.PAS | BAI1.INP | BAI1.OUT | 2 giây |
+| 2 | BAI2.PAS | BAI2.INP | BAI2.OUT | 2 giây |
+| 3 | BAI3.PAS | BAI3.INP | BAI3.OUT | 2 giây |
+| 4 | BAI4.PAS | BAI4.INP | BAI4.OUT | 2 giây |
+
+## Bài 1. Đếm nghiệm (6 điểm)
+
+Cho phuơng trình: ax + by = c (x, y là ẩn; a, b, c là số nguyên dương nhỏ hơn
+10<sup>5</sup>).
+
+### Yêu cầu
+
+Hãy đếm số nghiệm nguyên dương (x, y) của phương trình đã cho thoả mãn x, y
+nguyên tố cùng nhau.
+
+### Dữ liệu vào
+
+Một dòng duy nhất chứa ba số a, b, c cách nhau bởi một dấu cách.
+
+### Dữ liệu ra
+
+Số nghiệm (x, y) thoả mãn yêu cầu trên.
+
+### Ví dụ
+
+| BAI1.INP | BAI2.OUT | Giải thích |
+| -------- | -------- | ------------------------- |
+| 1 2 10 | 2 | (x, y) ∈ {(4, 3), (8, 1)} |
+
+## Bài 2. Điều hoà (5 điểm)
+
+Một trường THPT có n lớp học được đánh số thứ tự từ 1 đến n cần trang bị điều
+hoà. Mỗi lớp một điều hoà với công suất phụ thuộc vào diện tích của từng lớp.
+Lớp thứ i cần lắp điều hoà với công suất không bé hơn a<sub>i</sub> (W). Nhà
+trường đã tham khảo các cửa hàng điện lạnh và lập được bảng danh mục các loại
+điều hoà kèm theo công suất và giá tương ứng.
+
+### Yêu cầu
+
+Cho trước yêu cầu điều hoà với công suất tương ứng nhỏ nhất của từng lớp học
+cũng như danh mục các loại điều hoà. Hãy giúp nhà trường tính số tiền nhỏ nhất
+cần bỏ ra để trang bị điều hoà cho tất cả n lớp học.
+
+### Dữ liệu vào
+
+* Dòng đầu là số tự nhiên n (1 ≤ n ≤ 50000) là số lượng lớp học,
+* Dòng thứ hai chứ n số nguyên a<sub>i</sub> (1 ≤ a<sub>i</sub> ≤ 1000) là công
+ suất nhỏ nhất của điều hoà cần trang bị cho lớp i.
+* Dòng thứ 3 chứa số nguyên m (1 ≤ m ≤ 50000) là số lượng các model điều hoà
+ khác nhau (mỗi model có số lượng điều hoà không hạn chế).
+* m dòng tiếp theo, mỗi dòng chứa 2 số nguyên b<sub>j</sub>, c<sub>j</sub> (1 ≤
+ b<sub>j</sub>, c<sub>j</sub> ≤ 1000) lần lượt là công suất và giá tương ứng
+ của loại điều hoà model j.
+
+### Kết quả ra
+
+Tổng số tiền nhỏ nhất để mua đủ n điều hoà cho các lớp của trường.
+
+### Ví dụ
+
+| BAI2.INP | BAI2.OUT | Giải thích |
+| -------- | -------- | -------------------------------------- |
+| 3 | 13 | Lớp 1 mua điều hoà công suất 2, giá 3 |
+| 1 2 3 | | Lớp 2 mua điều hoà công suất 2, giá 3 |
+| 4 | | Lớp 3 mua điều hoà công suất 10, giá 7 |
+| 1 10 | | |
+| 1 5 | | |
+| 10 7 | | |
+| 2 3 | | |
diff --git a/12/TP-HN-2015/bai1.pas b/12/TP-HN-2015/bai1.pas
new file mode 100644
index 0000000..312f2b4
--- /dev/null
+++ b/12/TP-HN-2015/bai1.pas
@@ -0,0 +1,38 @@
+var
+ a, b, c, x, v: smallint;
+ f: text;
+
+
+function gcd(m, n: smallint): smallint;
+ var
+ p: smallint;
+
+ begin
+ while (n <> 0) do
+ begin
+ p := m mod n;
+ m := n;
+ n := p
+ end;
+
+ exit(m)
+ end;
+
+
+begin
+ assign(f, 'BAI1.INP');
+ reset(f);
+ read(f, a, b, c);
+ close(f);
+
+ v := 0;
+ for x := 1 to c div a do
+ if ((c - a * x) mod b = 0) and
+ (gcd(x, (c - a * x) div b) = 1) then
+ inc(v);
+
+ assign(f, 'BAI1.OUT');
+ rewrite(f);
+ writeln(f, v);
+ close(f)
+end.
diff --git a/12/TP-HN-2015/bai2.pas b/12/TP-HN-2015/bai2.pas
new file mode 100644
index 0000000..858d2b1
--- /dev/null
+++ b/12/TP-HN-2015/bai2.pas
@@ -0,0 +1,54 @@
+var
+ n, m, i, b, c, j: word;
+ a: array of word;
+ f: text;
+ bc: array[1..1000, 1..1000] of boolean;
+ bestprice: array[1..1000] of word;
+ v: longint = 0;
+
+
+begin
+ assign(f, 'BAI2.INP');
+ reset(f);
+
+ read(f, n);
+ setlength(a, n);
+ for i := 0 to n - 1 do
+ read(f, a[i]);
+
+ fillchar(bc, sizeof(bc), false);
+ readln(f, m);
+ for i := 1 to m do
+ begin
+ read(f, b, c);
+ bc[b][c] := true
+ end;
+
+ close(f);
+
+ for i := 1 to 1000 do
+ bc[i][1000] := true;
+
+ for i := 1 to 1000 do
+ if bc[1000][i] then
+ begin
+ bestprice[1000] := i;
+ break
+ end;
+
+ for i := 999 downto 1 do
+ begin
+ for j := 1 to bestprice[i + 1] do
+ if bc[i][j] then
+ break;
+ bestprice[i] := j
+ end;
+
+ for i := 0 to n - 1 do
+ inc(v, bestprice[a[i]]);
+
+ assign(f, 'BAI2.OUT');
+ rewrite(f);
+ writeln(f, v);
+ close(f)
+end.