about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--9/TP-Huế-2014/README.md48
-rw-r--r--9/TP-Huế-2014/bai1.pas15
-rw-r--r--9/TP-Huế-2014/bai2.pas35
-rw-r--r--9/TP-Huế-2014/bai3.pas34
-rw-r--r--THT/B/QG-2016/trigrid.c30
5 files changed, 162 insertions, 0 deletions
diff --git a/9/TP-Huế-2014/README.md b/9/TP-Huế-2014/README.md
new file mode 100644
index 0000000..f632ce1
--- /dev/null
+++ b/9/TP-Huế-2014/README.md
@@ -0,0 +1,48 @@
+# THI CHỌN HỌC SINH GIỎI CẤP THÀNH PHỐ
+
+UBND THÀNH PHỐ HUẾ
+PHÒNG GIÁO DỤC VÀ ĐÀO TẠO
+MÔN TIN HỌC - NĂM HỌC: 2013-2014
+Thời gian: 120 phút (Không kể thời gian giao đề)
+
+## Bài 1 (3 điểm)
+
+Hai số tự nhiên `n`, `m` được gọi là nguyên tố tương đương nếu chúng có chung
+các ước số nguyên tố. Hãy viết chương trình nhập vào hai số `n`, `m` và kiểm
+tra chúng có là nguyên tố tương đương với nhau hay không.
+
+**Ví dụ:** số 75 và số 15 là nguyên tố tương đương vì chúng có cùng các ước số
+nguyên tố là 3 và 5. 
+
+## Bài 2 (3 điểm)
+
+Cho hệ phương trình bậc nhất hai ẩn:
+
+    ax + by = c
+    a'x + b'y = c'
+
+Hãy viết chương trình giải hệ phương trình trên, đồng thời xác định vị trí
+tương đối của hai đường thẳng `d: ax + by = c` và `d': a'x + b'y =c'` đã tạo
+nên hệ phương trình.
+
+## Bài 3 (4 điểm)
+
+Cho hai xâu `X`, `Y` chứa các kí tự số từ 0 đến 9 và không dài quá 250 kí tự.
+
+Hãy viết chương trình tạo ra xâu `ST` thoả mãn các điều kiện sau:
+
+* Gồm các kí tự số vừa có mặt ở xâu `X`, vừa có mặt ở xâu `Y`
+* Các kí tự số trong xâu `ST` chỉ xuất hiện duy nhất một lần
+* Giá trị xâu `ST` nhận được là một số đạt giá trị lớn nhất
+
+Dữ liệu vào cho bởi file `INPUT.INP` chứa giá trị xâu `X` và xâu `Y`, mỗi xâu
+nằm trên một dòng.
+
+Dữ liệu ra chứa ở file `OUTPUT.OUT` là số lớn nhất nhận được.
+
+**Ví dụ:**
+
+INPUT.INP | OUTPUT.OUT
+--------- | ----------
+19012304  | 43210
+034012    |
diff --git a/9/TP-Huế-2014/bai1.pas b/9/TP-Huế-2014/bai1.pas
new file mode 100644
index 0000000..7bd0d92
--- /dev/null
+++ b/9/TP-Huế-2014/bai1.pas
@@ -0,0 +1,15 @@
+var
+  n, m, p: qword;
+
+begin
+  read(n, m);
+
+  while m <> 0 do
+    begin
+      p := n mod m;
+      n := m;
+      m := p
+    end;
+
+  writeln(n <> 1)
+end.
diff --git a/9/TP-Huế-2014/bai2.pas b/9/TP-Huế-2014/bai2.pas
new file mode 100644
index 0000000..172137d
--- /dev/null
+++ b/9/TP-Huế-2014/bai2.pas
@@ -0,0 +1,35 @@
+var
+  a, b, c, e, p, k, tmp: real;
+
+function det(a, b, c, d: real): real;
+  begin
+    exit(a * d - b * c)
+  end;
+
+begin
+  read(a, b, c, e, p, k);
+
+  tmp := det(a, b, e, p);
+  
+  if tmp <> 0 then
+    begin
+      writeln('x = ', (det(c, b, k, p) / tmp):0:6);
+      writeln('y = ', (det(a, c, e, k) / tmp):0:6);
+      writeln('Hai đường thẳng cắt nhau.')
+    end
+  else if c <> k then
+    begin
+      writeln('Phương trình vô nghiệm.');
+      writeln('Hai đường thẳng song song.')
+    end
+  else
+    begin
+      if a = 0 then
+        writeln('y = ',  (c / b):0:6)
+      else if b = 0 then
+        writeln('x = ', (c / a):0:6)
+      else
+        writeln('x = ', (-b / a):0:6, 'y + ', (c / a):0:6);
+      writeln('Hai đường thẳng trùng nhau.')
+    end;
+end.
diff --git a/9/TP-Huế-2014/bai3.pas b/9/TP-Huế-2014/bai3.pas
new file mode 100644
index 0000000..91fc05f
--- /dev/null
+++ b/9/TP-Huế-2014/bai3.pas
@@ -0,0 +1,34 @@
+var
+  x, y: string;
+  f: text;
+  a: array[0 .. 9] of shortint;
+  b: shortint;
+  c: char;
+
+begin
+  assign(f, 'INPUT.INP');
+  reset(f);
+  readln(f, x);
+  readln(f, y);
+  close(f);
+
+  fillchar(a, 0, sizeof(a));
+
+  for c in x do
+    a[ord(c) - 48] := 1;
+
+  for c in y do
+    begin
+      b := ord(c) - 48;
+      if a[b] = 1 then
+        a[b] := 2
+    end;
+
+  assign(f, 'OUTPUT.OUT');
+  rewrite(f);
+  for b := 9 downto 0 do
+    if a[b] = 2 then
+      write(f, b);
+  writeln(f);
+  close(f)
+end.
diff --git a/THT/B/QG-2016/trigrid.c b/THT/B/QG-2016/trigrid.c
new file mode 100644
index 0000000..5b8606c
--- /dev/null
+++ b/THT/B/QG-2016/trigrid.c
@@ -0,0 +1,30 @@
+#include <stdio.h>
+
+
+const long long a[] = {4, 3, 5, 6, 111, 222, 3333, 4444, 55555, 666666, 7777777,
+                       88888888, 999999999, 123456789123456789,
+                       1000000000000000000};
+
+long long quadratic(long long x, char a, char b, char c)
+{
+	return a * x * x + b * x + c;
+}
+
+int main()
+{
+	char i;
+	long long k, q;
+	FILE *f;
+
+	f = fopen("TRIGRID.TXT", "w");
+
+	for (i = 0; i < 15; i++) {
+		q = a[i] % 2016;
+		k = a[i] / 2016 % 2016 * 252 * quadratic(q, 6, 10, 2);
+		fprintf(f, "%d\n", (k + quadratic(q, 2, 5, 2) * q / 8) % 2016);
+	}
+
+	fclose(f);
+
+	return 0;
+}