diff options
Diffstat (limited to '2ndary/12/Q-VĩnhTường-2006')
-rw-r--r-- | 2ndary/12/Q-VĩnhTường-2006/README.md | 67 | ||||
-rw-r--r-- | 2ndary/12/Q-VĩnhTường-2006/cau1.c | 20 | ||||
-rw-r--r-- | 2ndary/12/Q-VĩnhTường-2006/cau2.c | 39 | ||||
-rw-r--r-- | 2ndary/12/Q-VĩnhTường-2006/cau3.c | 40 | ||||
-rw-r--r-- | 2ndary/12/Q-VĩnhTường-2006/cau4.c | 26 |
5 files changed, 192 insertions, 0 deletions
diff --git a/2ndary/12/Q-VĩnhTường-2006/README.md b/2ndary/12/Q-VĩnhTường-2006/README.md new file mode 100644 index 0000000..c96c99e --- /dev/null +++ b/2ndary/12/Q-VĩnhTường-2006/README.md @@ -0,0 +1,67 @@ +# ĐỀ 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ố tự nhiên `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<br>8 | +| 15 | 3 5<br>8 12 | +| 21 | 3 7<br>16 | +| 70 | 2 5 7<br>64 | +| 150 | 2 3 5 5<br>128 | + +## Câu 4 (3 điểm) + +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/2ndary/12/Q-VĩnhTường-2006/cau1.c b/2ndary/12/Q-VĩnhTường-2006/cau1.c new file mode 100644 index 0000000..173e7c2 --- /dev/null +++ b/2ndary/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/2ndary/12/Q-VĩnhTường-2006/cau2.c b/2ndary/12/Q-VĩnhTường-2006/cau2.c new file mode 100644 index 0000000..4ad1c3b --- /dev/null +++ b/2ndary/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/2ndary/12/Q-VĩnhTường-2006/cau3.c b/2ndary/12/Q-VĩnhTường-2006/cau3.c new file mode 100644 index 0000000..136f154 --- /dev/null +++ b/2ndary/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/2ndary/12/Q-VĩnhTường-2006/cau4.c b/2ndary/12/Q-VĩnhTường-2006/cau4.c new file mode 100644 index 0000000..d971927 --- /dev/null +++ b/2ndary/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; +} |