about summary refs log tree commit diff
path: root/others
diff options
context:
space:
mode:
authorRaphael McSinyx <vn.mcsinyx@gmail.com>2017-01-01 20:42:05 +0700
committerRaphael McSinyx <vn.mcsinyx@gmail.com>2017-01-01 20:42:05 +0700
commitc67182c04491f2cf8b67e78b68aebf32aea25470 (patch)
treed82d7fd5478dffb1348143c67cbb330955dbf0f8 /others
parent70f37066d2d368a2810a2be209ae0bd8b391293b (diff)
downloadcp-c67182c04491f2cf8b67e78b68aebf32aea25470.tar.gz
Update others/{mHoang,mkcal}
Diffstat (limited to 'others')
-rw-r--r--others/mHoang/README.md75
-rw-r--r--others/mHoang/decor.c13
-rwxr-xr-xothers/mHoang/decor.py15
-rw-r--r--others/mHoang/pfactor.c (renamed from others/mHoang20150916/pfactor.c)0
-rw-r--r--others/mHoang/triangle.c (renamed from others/mHoang20150916/triangle.c)0
-rw-r--r--others/mHoang20150916/README.md42
-rw-r--r--others/mkcal/README.md148
-rw-r--r--others/mkcal/llgcmm.pas97
-rwxr-xr-xothers/mkcal/lập-lịch.pdfbin52261 -> 0 bytes
9 files changed, 348 insertions, 42 deletions
diff --git a/others/mHoang/README.md b/others/mHoang/README.md
new file mode 100644
index 0000000..05aa6bc
--- /dev/null
+++ b/others/mHoang/README.md
@@ -0,0 +1,75 @@
+# mHoang
+
+## THỪA SỐ NGUYÊN TỐ (PFACTOR.*)
+
+Cho số nguyên dương n, tìm số nguyên tố p lớn nhất là ước số của n.
+
+### Dữ liệu
+
+Vào từ thiết bị nhập chuẩn số nguyên n, (2 ≤ n ≤ 10<sup>14</sup>).
+
+### Kết quả
+
+Ghi ra thiết bị xuất chuẩn một số nguyên duy nhất là ước số nguyên tố lớn nhất
+của n.
+
+### Ví dụ
+
+| Sample Input | Sample Output |
+| :----------: | :-----------: |
+|      10      |       5       |
+
+## TAM GIÁC (TRIANGLE.*)
+
+Cho ba số nguyên a, b, c là độ dài ba cạnh của một tam giác, hãy cho biết tam
+giác đó là tam giác vuông, nhọn, hay tù.
+
+### Dữ liệu
+
+Vào từ thiết bị nhập chuẩn ba số nguyên dương a, b, c cách nhau bởi dấu cách.
+
+### Kết quả
+
+Ghi ra thiết bị xuất chuẩn số 0, 1, hay 2 tùy theo tam giác đó là vuông, nhọn,
+hay tù.
+
+### Ví dụ
+
+| Sample Input | Sample Output |
+| :----------: | :-----------: |
+|     3 4 5    |       0       |
+|     3 3 3    |       1       |
+|     3 4 6    |       2       |
+
+## HỆ THỐNG ĐÈN MÀU (DECOR.*)
+
+Để trang trí cho một lễ hội, ban tổ chức đã dùng một hệ thống đèn màu gồm n đèn
+đánh số từ 1 đến n. Mỗi đèn có khả năng sáng màu xanh hoặc màu đỏ. Các đèn được
+điều khiển theo quy tắc sau:
+
+* Bấm công tắc lần 1, tất cả các đèn đều sáng màu xanh.
+* Bấm công tắc lần 2, tất cả các đèn có số thứ tự chia hết cho 2 sẽ đổi màu
+  (xanh thành đỏ và ngược lại).
+* Bấm công tắc lần 3, tất cả các đèn có số thứ tự chia hết cho 3 sẽ đổi màu
+  (xanh thành đỏ và ngược lại).
+* ...
+* Bấm công tắc lần n, tất cả các đèn có số thứ tự chia hết cho n sẽ đổi màu
+  (xanh thành đỏ và ngược lại).
+
+### Yêu cầu
+
+Xác định số đèn sáng màu xanh sau n lần bấm công tắc.
+
+### Dữ liệu
+
+Vào từ thiết bị nhập chuẩn số nguyên dương n ≤ 10<sup>18</sup>.
+
+### Kết quả
+
+Ghi ra thiết bị xuất chuẩn số đèn xanh sau lần bấm công tắc thứ n.
+
+### Ví dụ
+
+| Sample Input | Sample Output |
+| :----------: | :-----------: |
+|       6      |       2       |
diff --git a/others/mHoang/decor.c b/others/mHoang/decor.c
new file mode 100644
index 0000000..54cb2c6
--- /dev/null
+++ b/others/mHoang/decor.c
@@ -0,0 +1,13 @@
+#include <stdio.h>
+#include <math.h>
+
+int main()
+{
+	unsigned long long n;
+
+	scanf("%lld", &n);
+
+	printf("%ld\n", (unsigned long) sqrt(n));
+
+	return 0;
+}
diff --git a/others/mHoang/decor.py b/others/mHoang/decor.py
new file mode 100755
index 0000000..a083f6d
--- /dev/null
+++ b/others/mHoang/decor.py
@@ -0,0 +1,15 @@
+#!/usr/bin/env python3
+
+# Dễ thấy các đèn đổi màu lẻ lần có màu xanh, chẵn lần màu đỏ.
+#
+# Xét đèn thứ i:
+# * Giả sử phân tích i thành các ước nguyên tố: i = p1 ** q1 + ... + pm ** qm,
+#   khi đó i sẽ có k = (q1 + 1) * ... * (qm + 1) ước nguyên dương.
+# * Đèn thứ i sẽ được đổi màu ở lần bấm công tắc nhận i làm bội, hay sẽ đổi màu
+#   k lần.
+# * k lẻ khi và chỉ khi q1 + 1, ..., qm + 1 đều lẻ hay q1, ..., qm đều chẵn tức
+#   là i là số chính phương.
+#
+# Vậy kết quả cần tìm là số số chính phương từ 1 đến n.
+
+print(int(int(input()) ** 0.5))
diff --git a/others/mHoang20150916/pfactor.c b/others/mHoang/pfactor.c
index fee50b5..fee50b5 100644
--- a/others/mHoang20150916/pfactor.c
+++ b/others/mHoang/pfactor.c
diff --git a/others/mHoang20150916/triangle.c b/others/mHoang/triangle.c
index 0f5d28e..0f5d28e 100644
--- a/others/mHoang20150916/triangle.c
+++ b/others/mHoang/triangle.c
diff --git a/others/mHoang20150916/README.md b/others/mHoang20150916/README.md
deleted file mode 100644
index 3f6d5b0..0000000
--- a/others/mHoang20150916/README.md
+++ /dev/null
@@ -1,42 +0,0 @@
-# mHoang
-
-## THỪA SỐ NGUYÊN TỐ (PFACTOR.*)
-
-Cho số nguyên dương n, tìm số nguyên tố p lớn nhất là ước số của n.
-
-### Dữ liệu
-
-Vào từ thiết bị nhập chuẩn số nguyên n, (2 ≤ n ≤ 10<sup>14</sup>).
-
-### Kết quả
-
-Ghi ra thiết bị xuất chuẩn một số nguyên duy nhất là ước số nguyên tố lớn nhất
-của n.
-
-### Ví dụ
-
-| Sample Input | Sample Output |
-| :----------: | :-----------: |
-|      10      |       5       |
-
-## TAM GIÁC (TRIANGLE.*)
-
-Cho ba số nguyên a, b, c là độ dài ba cạnh của một tam giác, hãy cho biết tam
-giác đó là tam giác vuông, nhọn, hay tù.
-
-### Dữ liệu
-
-Vào từ thiết bị nhập chuẩn ba số nguyên dương a, b, c cách nhau bởi dấu cách.
-
-### Kết quả
-
-Ghi ra thiết bị xuất chuẩn số 0, 1, hay 2 tùy theo tam giác đó là vuông, nhọn,
-hay tù.
-
-### Ví dụ
-
-| Sample Input | Sample Output |
-| :----------: | :-----------: |
-|     3 4 5    |       0       |
-|     3 3 3    |       1       |
-|     3 4 6    |       2       |
diff --git a/others/mkcal/README.md b/others/mkcal/README.md
new file mode 100644
index 0000000..bebe188
--- /dev/null
+++ b/others/mkcal/README.md
@@ -0,0 +1,148 @@
+# Bài tập lập lịch
+
+## Chương trình máy tính
+
+Giả sử trong một phiên làm việc từ thời điểm 0 đến 8640000, một trung tâm tính
+toán cần thực hiện n chương trình, chương trình i được thực hiện trong đoạn
+thời gian [a<sub>i</sub>, b<sub>i</sub>].
+
+### Yêu cầu
+
+* Cho đoạn thời gian [p<sub>0</sub>, q<sub>0</sub>], kiểm tra xem mọi thời điểm
+  của đoạn luôn có chương trình chạy hay không.
+* Cho đoạn thời gian [r<sub>0</sub>, s<sub>0</sub>], kiểm tra xem mọi thời điểm
+  của đoạn luôn không có chương trình chạy hay không.
+* Tìm đoạn thời gian [p, q] dài nhất luôn có chương trình chạy.
+* Tìm đoạn thời gian [r, s] dài nhất không có chương trình chạy.
+
+### Dữ liệu vào
+
+* Dòng đầu ghi số nguyên dương n.
+* n dòng tiếp theo, với i từ 1 đến n, dòng thứ i + 1 ghi hai số tự nhiên
+  a<sub>i</sub> và b<sub>i</sub>.
+* Dòng thứ n + 2 ghi hai số tự nhiên p<sub>0</sub>, q<sub>0</sub>.
+* Dòng thứ n + 3 ghi hai số tự nhiên r<sub>0</sub>, s<sub>0</sub>.
+
+### Dữ liệu ra
+
+* Dòng đầu ghi 1 nếu đoạn thời gian [p<sub>0</sub>, q<sub>0</sub>] luôn có
+  chương trình chạy, ghi 0 nếu không phải.
+* Dòng thứ hai ghi 1 nếu đoạn thời gian [r<sub>0</sub>, s<sub>0</sub>] không có
+  chương trình nào chạy, ghi 0 nếu có.
+* Dòng thứ ba ghi hai số p và q.
+* Dòng thứ tư ghi hai số r và s.
+
+### Giới hạn
+
+* n ≤ 200
+* 0 ≤ a<sub>i</sub> ≤ b<sub>i</sub> < 8640000
+* 0 ≤ p<sub>0</sub> ≤ q<sub>0</sub> < 8640000
+* 0 ≤ r<sub>0</sub> ≤ s<sub>0</sub> < 8640000
+
+### Ví dụ
+
+|     CTMT.OUT    |     CTMT.INP    |
+| --------------- | --------------- |
+| 5               | 1               |
+| 1000 10000      | 0               |
+| 2000 30000      | 8000000 8500000 |
+| 20000 100000    | 500001 7999999  |
+| 200000 500000   |                 |
+| 8000000 8500000 |                 |
+| 1000 100000     |                 |
+| 0 1000          |                 |
+
+## Xếp việc
+
+Cho n công việc, mỗi công việc phải làm trước một số công việc nào đó khác.
+
+Hãy xếp lịch thực hiện đủ n công việc.
+
+### Dữ liệu vào
+
+* Dòng đầu là số nguyên dương n.
+* Các dòng tiếp, đầu dòng là số thứ tự i của một công việc, tiếp theo là số thứ
+  tự của các công việc phải làm sau i.
+
+### Dữ liệu ra
+
+Thứ thự thực hiện của n công việc in trên một dòng.
+
+### Giới hạn
+
+* 2 ≤ n ≤ 200
+* 1 ≤ i ≤ n
+
+
+### Ví dụ
+
+| XEPVIEC.INP |      XEPVIEC.OUT     |
+| ----------- | -------------------- |
+|    10       | 1 2 7 9 4 6 3 5 8 10 |
+|    1 2 3    |                      |
+|    2 4 10   |                      |
+|    3 5      |                      |
+|    4 6 8    |                      |
+|    5 8      |                      |
+|    6 3      |                      |
+|    7 9 5    |                      |
+|    9 4 10   |                      |
+
+## Lập lịch gia công trên hai máy
+
+Một sản phẩm gồm n chi tiết, mỗi chi tiết phải gia công lần lượt trên hai máy a
+và b. Thời gian thực hiện chi tiết i trên máy a là a<sub>i</sub>, trên máy b là
+b<sub>i</sub>.
+
+Hãy xếp lịch hoàn thành sản phẩm với thời gian ngắn nhất.
+
+### Dữ liệu vào
+
+* Dòng đầu là số nguyên dương n.
+* n dòng tiếp theo, dòng thứ i + 1 lần lượt là hai số nguyên dương
+  a<sub>i</sub>, b<sub>i</sub>.
+
+### Dữ liệu ra
+
+* Dòng đầu là thời gian ngắn nhất để hoàn thành sản phẩm.
+* Dòng thứ hai ghi thứ tự gia công các chi tiết để hoàn thành trong thời gian
+  ngắn nhất này.
+
+### Ví dụ
+
+| LLGC2M.INP | LLGC2M.OUT |
+| ---------- | ---------- |
+|     5      |  26        |
+|     3 3    |  1 4 2 5 3 |
+|     4 3    |            |
+|     6 2    |            |
+|     5 7    |            |
+|     6 3    |            |
+
+## Lập lịch chia n việc cho m máy
+
+Cho n công việc, công việc i hoàn thành trong thời gian t<sub>i</sub>. Các công
+việc được thực hiện trên m máy có công suất như nhau.
+
+Hãy phân chia công việc cho các máy sao cho thời gian hoàn thành ngắn nhất.
+
+### Dữ liệu vào
+
+* Dòng đầu lần lượt ghi hai số nguyên dương n và m.
+* Dòng thứ hai là n số nguyên dương t<sub>1</sub>, t<sub>2</sub>, ...,
+  t<sub>n</sub>.
+
+### Dữ liệu ra
+
+* Dòng đầu là thời gian ngắn nhất để hoàn thành công việc.
+* m dòng tiếp theo, dòng thứ i + 1 ghi số thứ tự các công việc thực hiện trên
+  máy i để hoàn thành công việc trong thời gian ngắn nhất này.
+
+### Ví dụ
+
+|  LLGCMM.INP | LLGCMM.OUT |
+| ----------- | ---------- |
+| 6 3         | 8          |
+| 2 5 8 1 5 1 | 3          |
+|             | 2 4 1      |
+|             | 5 6        |
diff --git a/others/mkcal/llgcmm.pas b/others/mkcal/llgcmm.pas
new file mode 100644
index 0000000..76ea699
--- /dev/null
+++ b/others/mkcal/llgcmm.pas
@@ -0,0 +1,97 @@
+type
+  foo_t = record
+            t, idx: integer
+          end;
+
+var
+  f: text;
+  n, m, i, j, k: integer;
+  a: array of foo_t;
+  b: array of array of foo_t;
+  c: array of longint;
+  foo: foo_t;
+  tmp: longint;
+
+
+procedure swp(var x, y: foo_t);
+  var
+    tmp: integer;
+
+  begin
+    tmp := x.t;
+    x.t := y.t;
+    y.t := tmp;
+
+    tmp := x.idx;
+    x.idx := y.idx;
+    y.idx := tmp
+  end;
+
+
+begin
+  assign(f, 'LLGCMM.INP');
+  reset(f);
+
+  readln(f, n, m);
+  setlength(a, n);
+
+  for i := 0 to n - 1 do
+    read(f, a[i].t);
+
+  close(f);
+
+  for i := 1 to n do
+    a[i - 1].idx := i;
+
+  for i := 0 to n - 2 do
+    for j := i to n - 1 do
+      if a[i].t < a[j].t then
+        swp(a[i], a[j]);
+
+  setlength(b, m);
+  setlength(c, m);
+
+  for i := 0 to m - 1 do
+    begin
+      setlength(b[i], 0);
+      c[i] := 0
+    end;
+
+  for i := 0 to n - 1 do
+    begin
+      tmp := c[0];
+      k := 0;
+
+      for j := 1 to m - 1 do
+        if c[j] < tmp then
+          begin
+            k := j;
+            tmp := c[j]
+          end;
+
+      setlength(b[k], length(b[k]) + 1);
+      b[k][length(b[k]) - 1].t := a[i].t;
+      b[k][length(b[k]) - 1].idx := a[i].idx;
+      c[k] := c[k] + a[i].t
+    end;
+
+  tmp := 0;
+  for i := 0 to m - 1 do
+    if c[i] > tmp then
+      tmp := c[i];
+
+  assign(f, 'LLGCMM.OUT');
+  rewrite(f);
+
+  writeln(f, tmp);
+
+  for i := 0 to m - 1 do
+    begin
+      for foo in b[i] do
+        write(f, foo.idx, ' ');
+
+      writeln(f);
+    end;
+
+  close(f)
+end.
diff --git a/others/mkcal/lập-lịch.pdf b/others/mkcal/lập-lịch.pdf
deleted file mode 100755
index 48ad249..0000000
--- a/others/mkcal/lập-lịch.pdf
+++ /dev/null
Binary files differ