1
0
Fork 0

Thêm đề HSG 12 huyện Vĩnh Tường, Vĩnh Phúc

This commit is contained in:
Nguyễn Gia Phong 2016-11-06 11:13:14 +07:00
parent e4767bb46d
commit 7de121c4b4
43 changed files with 197 additions and 0 deletions

View File

@ -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ố 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
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

View File

@ -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;
}

View File

@ -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;
}
}

View File

@ -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;
}

View File

@ -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;
}

Binary file not shown.

Binary file not shown.

View File

Before

Width:  |  Height:  |  Size: 1.2 MiB

After

Width:  |  Height:  |  Size: 1.2 MiB