about summary refs log tree commit diff
path: root/12/Q-VĩnhTường-2006
diff options
context:
space:
mode:
Diffstat (limited to '12/Q-VĩnhTường-2006')
-rw-r--r--12/Q-VĩnhTường-2006/README.md72
-rw-r--r--12/Q-VĩnhTường-2006/cau1.c20
-rw-r--r--12/Q-VĩnhTường-2006/cau2.c39
-rw-r--r--12/Q-VĩnhTường-2006/cau3.c40
-rw-r--r--12/Q-VĩnhTường-2006/cau4.c26
5 files changed, 197 insertions, 0 deletions
diff --git a/12/Q-VĩnhTường-2006/README.md b/12/Q-VĩnhTường-2006/README.md
new file mode 100644
index 0000000..a4c8dad
--- /dev/null
+++ b/12/Q-VĩnhTường-2006/README.md
@@ -0,0 +1,72 @@
+# ĐỀ THI HSG LỚP 12 HUYỆN VĨNH TƯỜNG NĂM HỌC 2006-2007
+
+Môn: Tin học
+Thời gian: 150 phút (không kể thời gian giao đề).
+
+## Câu 1 (5 điểm)
+
+Nhập vào một số nhị phân có `n` chữ số (`n` < 100). Hãy in ra số dư khi chia số
+đó cho 3.
+
+Ví dụ:
+
+n  |   Số nhị phân   | Kết quả
+-- | --------------- | -------
+3  | 101             | 2
+8  | 10100111        | 2
+12 | 100000001101    | 0
+14 | 11001111101110  | 1
+6  | 111111          | 0
+15 | 111111111111110 | 0
+
+## Câu 2 (4 điểm)
+
+Nhập vào số nguyên dương `n`. Hãy in ra số nguyên tố nhỏ nhất lớn hơn `n`.
+
+Ví dụ:
+
+  n  | Kết quả
+---- | -------
+10   | 11
+7    | 11
+44   | 47
+992  | 997
+2332 | 2333
+
+## Câu 3 (8 điểm)
+
+Nhập vào từ số nguyên dương `n` (`n` < 1000).
+
+1. Phân tích `n` thành tích các thừa số nguyên tố.
+2. Tìm các số tự nhiên nhỏ hơn hoặc bằng `n` mà sau khi làm phép phân tích ở
+   phần 1 có nhiều nhân tử nhất.
+
+Ví dụ:
+
+ n  | Kết quả
+--- | -------
+9   | 3 3
+    | 8
+15  | 3 5
+    | 8 12
+21  | 3 7
+    | 16
+70  | 2 5 7
+    | 64
+150 | 2 3 5 5
+    | 128
+
+## Câu 4
+
+Nhập vào một mảng gồm `n` (`n` < 20) số nguyên dương. Hãy đếm xem trong mảng có
+bao nhiêu số bậc thang. Biết một số được gọi là số bậc thang nếu biểu diễn thập
+phân của nó có nhiều hơn một chữ số đồng thời theo chiều từ trái qua phải, chữ
+số đứng sau không nhỏ hơn chữ số đứng trước.
+
+Ví dụ:
+
+n |          Dãy số          | Kết quả
+- | ------------------------ | -------
+7 | 1 4 7 5 8 9 3            | 0
+5 | 123 102 10023 9 21       | 1
+6 | 115 110 11112 31 14 1109 | 3
diff --git a/12/Q-VĩnhTường-2006/cau1.c b/12/Q-VĩnhTường-2006/cau1.c
new file mode 100644
index 0000000..173e7c2
--- /dev/null
+++ b/12/Q-VĩnhTường-2006/cau1.c
@@ -0,0 +1,20 @@
+#include <stdio.h>
+#include <string.h>
+
+int main()
+{
+	char b[100], i;
+	short a = 0;
+
+	scanf("%s", b);
+
+	for (i = strlen(b) - 1; i >= 0; i -= 2)
+		a += b[i] - 48;
+
+	for (i = strlen(b) - 2; i >= 0; i -= 2)
+		a += b[i] * 2 - 96;
+
+	printf("%d\n", a % 3);
+
+	return 0;
+}
diff --git a/12/Q-VĩnhTường-2006/cau2.c b/12/Q-VĩnhTường-2006/cau2.c
new file mode 100644
index 0000000..4ad1c3b
--- /dev/null
+++ b/12/Q-VĩnhTường-2006/cau2.c
@@ -0,0 +1,39 @@
+#include <stdio.h>
+#include <math.h>
+
+char prime(unsigned long long m)
+{
+	unsigned long i;
+
+	for (i = 3; i <= sqrt(m); i += 2)
+		if (m % i == 0)
+			return 0;
+
+	return 1;
+}
+
+int main()
+{
+	unsigned long long n, i;
+
+	scanf("%lld", &n);
+
+	if (n == 1) {
+		puts("2");
+
+		return 0;
+	}
+
+	i = (n % 2) ? n : n - 1;
+
+	while (i <= 18446744073709551615ULL) {
+		i += 2;
+
+		if (!prime(i))
+			continue;
+
+		printf("%lld\n", i);
+
+		return 0;
+	}
+}
diff --git a/12/Q-VĩnhTường-2006/cau3.c b/12/Q-VĩnhTường-2006/cau3.c
new file mode 100644
index 0000000..136f154
--- /dev/null
+++ b/12/Q-VĩnhTường-2006/cau3.c
@@ -0,0 +1,40 @@
+#include <stdio.h>
+#include <math.h>
+
+const char PRIMES[] = {2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31};
+
+int main()
+{
+	char i;
+	short n, n0;
+
+	scanf("%hd", &n);
+
+	if (n < 2) {
+		printf("\n%hd\n", n);
+
+		return 0;
+	}
+
+	n0 = n;
+
+	for (i = 0; i < 11; i++)
+		while (n0 % PRIMES[i] == 0) {
+			n0 /= PRIMES[i];
+			printf("%hd ", PRIMES[i]);
+		}
+
+	if (n0 - 1)
+		printf("%hd\n", n0);
+	else
+		putchar(10);
+
+	n0 = pow(2, (int) log2(n) - 1);
+
+	if (n0 * 3 > n)
+		printf("%hd\n", n0 * 2);
+	else
+		printf("%hd %hd\n", n0 * 2, n0 * 3);
+
+	return 0;
+}
diff --git a/12/Q-VĩnhTường-2006/cau4.c b/12/Q-VĩnhTường-2006/cau4.c
new file mode 100644
index 0000000..d971927
--- /dev/null
+++ b/12/Q-VĩnhTường-2006/cau4.c
@@ -0,0 +1,26 @@
+#include <stdio.h>
+#include <string.h>
+
+int main()
+{
+	char n, count = 0, s[21], c, i;
+	unsigned long long m;
+
+	for (n = 1; n < 20 && scanf("%lld", &m) != EOF; n++) {
+		if (m < 10)
+			continue;
+
+		sprintf(s, "%lld", m);
+		c = s[0];
+
+		for (i = 1; i < strlen(s) && c; i++)
+			c = (c > s[i]) ? 0 : s[i];
+
+		if (c)
+			count++;
+	}
+
+	printf("%hhd\n", count);
+
+	return 0;
+}