Thêm đề HSG 12 huyện Vĩnh Tường, Vĩnh Phúc
This commit is contained in:
parent
e4767bb46d
commit
7de121c4b4
|
@ -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
|
|
@ -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;
|
||||
}
|
|
@ -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;
|
||||
}
|
||||
}
|
|
@ -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;
|
||||
}
|
|
@ -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.
Before Width: | Height: | Size: 1.2 MiB After Width: | Height: | Size: 1.2 MiB |
Loading…
Reference in New Issue