You are on page 1of 3

SỞ GD&ĐT THANH HOÁ ĐỀ THI KSCL HSG LẦN 1

TRƯỜNG THPT THẠCH THÀNH 1 NĂM HỌC 2023-2024


Môn thi: TIN HỌC
(Đề thi gồm 03 trang) Thời gian: 150 phút (không kể thời gian giao đề)

Họ và tên thí sinh: .................................................................. Số báo danh: ...............

Tên bài Tên file nguồn File Input File Outout

TỔNG SỐ HOÀN HẢO HOAN_HAO.* HOAN_HAO.INP HOAN_HAO.OUT

CHUYỂN ĐỔI CƠ SỐ HEXA.* HEXA.INP HEXA.OUT


TỔNG CÁC SỐ NGUYÊN
PRIME2.* PRIME2.INP PRIME2.OUT
TỐ
KHÔI PHỤC NGOẶC BRACKETS.* BRACKETS.INP BRACKETS.OUT
XÂU CON PHÂN BIỆT DIFFSSTR.* DIFFSSTR.INP DIFFSSTR.OUT
Lưu ý: Các chương trình lần lượt đặt tên theo Tên file nguồn (.* là phần
mở rộng của tệp chương trình tương ứng với ngôn ngữ lập trình mà thí sinh sử
dụng PASCAL, C++, PYTHON). Trong các file text dữ liệu vào, các số cách
nhau ít nhất 1 dấu cách.

CÂU 1: TỔNG SỐ HOÀN HẢO (6 ĐIỂM)


Ngày mới bắt đầu tham gia vào đội tuyển Tin học của nhà trường, Hoàng
đặc biệt yêu thích các con số. Hôm nay Hoàng được học về số hoàn hảo, Hoàng
đã biết được rằng: Số hoàn hảo là số có tổng các ước số nhỏ hơn nó bằng
chính nó (ví dụ số 6 là số hoàn hảo vì 6 có các ước nhỏ hơn nó là 1, 2, 3 và
1+2+3=6).
Hoàng chợt nảy ra ý định đố các bạn trong nhóm đội tuyển tính được tổng
các số hoàn hảo nhỏ hơn số N cho trước. Em hãy giúp các bạn giải quyết bài
toán đố trên nhé.
Yêu cầu: Tính tổng các số hoàn hảo nhỏ hơn hoặc bằng N.
Dữ liệu vào: Đọc từ tệp HOAN_HAO.INP một số nguyên N (1≤ N ≤ 105 )
Dữ liệu ra: Ghi ra tệp HOAN_HAO.OUT kết quả tìm được.
Ví dụ:
HOAN_HAO.INP HOAN_HAO.OUT
30 34
(Giải thích: có 2 số hoàn hảo nhỏ hơn hoặc bằng 30 là 6 và 28; 6+28=34)
CÂU 2: CHUYỂN ĐỔI CƠ SỐ (5 ĐIỂM)
Trong toán học, lâu nay Bờm chỉ biết đến số thập phân. Hôm nay, tình cờ
Bờm đọc được tài liệu nói về số hexa. Số hexa là số được tạo thành bởi các
chữsố (0 →9) và các chữcái (A →F). Muốn chuyển đổi một số nguyên K (K ≥
0) từ hệ thập phân sang hệ hexa Bờm làm như sau: Bờm lấy số K chia cho 16
được thương là P, rồi lấy thương P chia cho 16. Cứ lặp lại như vậy cho đến khi
nào thương bằng 0 thì dừng, sau đó viết liên tiếp phần dư từ dưới lên thì Bờm
thu được số hexa:
Yêu cầu: Cho dãy số nguyên ở hệ thập phân. Hãy giúp Bờm chuyển dãy số trên
thành dãy số tương ứng ở hệ hexa.
Dữ liệu vào: Từ file HEXA.INP gồm:
 Dòng 1: Số nguyên dương n (n ≤103).
 Dòng 2…n+1: Mỗi dòng chứa một số nguyên K (0 ≤ K ≤ 109).
Kết quả: Ghi ra file HEXA.OUT gồm: n dòng là n số hexa tương ứng.
Ví dụ:
HEXA.INP HEXA.OUT
2 3
3 7E3
2019

CÂU 3: TỔNG CÁC SỐ NGUYÊN TỐ (4 ĐIỂM)


Cho số nguyên dương N (N ≤ 105).
Yêu cầu: Tìm số các cặp số nguyên dương x, y sao cho:
 x, y là 2 số nguyên tố.
 x+y=N
 x≤y
Dữ liệu vào: Vào từ file văn bản PRIME2.INP gồm một số duy nhất N.
Kết quả: Đưa ra file văn bản PRIME2.OUT một số là số các cặp số tìm được.
Ví dụ:
PRIME2.INP PRIME2.OUT
10 2

CÂU 4: KHÔI PHỤC NGOẶC (3 ĐIỂM)


Một dãy dấu ngoặc hợp lệ là dãy các kí tụ “(“ và “)” được định nghĩa như
sau:
1. Dãy rỗng (không có kí tự nào) là một dãy dấu ngoặc hợp lệ
2. Nếu A là một dãy dấu ngoặc hợp lệ thì (A) là dãy dấu ngoặc hợp lệ. Dấu
ngoặc mở và dấu ngoặc đóng hai bên dãy A được gọi là tương ứng với
nhau
3. Nếu A và B là hai dãy dấu ngoặc hợp lệ thì AB là dãy dấu ngoặc hợp lệ
Ví dụ: ((()))()(()) là dãy dấu ngoặc hợp lệ, các dấu mở ngoặc ở các vị trí 1,
2, 3,7, 9, 10 lần lượt tương ứng với với các dấu đóng ngoặc ở vị trí 4, 5, 6, 8,
11,12
Ban đầu có một dãy dấu ngoặc hợp lệ, người ta viết vào dưới một dấu
ngoặc một số là số dấu ngoặc (cả đóng và mở) nằm ở giữa dấu ngoặc mở đó và
dấu ngoặc đóng tương ứng.
( ( ( ) ) ) ()(())
420 0 20
Sau đó xóa đi dãy ngoặc.
Yêu cầu: Cho biết dãy số còn lại, hãy khôi phục lại dãy ngoặc ban đầu
Dữ liệu: Vào từ file văn bản BRACKETS.INP
 Dòng 1: Ghi số n là số phần tử của dãy số còn lại (n<=10000)
 Dòng 2: Ghi lần lượt các số trong dãy
Kết quả: Ghi ra file văn bản BRACKETS.OUT: Gồm 1 dòng ghi dãy dấu ngoặc
khôi phục được
Ví dụ:
BRACKETS.INP BRACKETS.OUT BRACKETS.INP BRACKETS.OUT
7 ((()))(())()() 10 ((())()())(()())()()
4202000 8200040000
CÂU 5: XÂU CON PHÂN BIỆT (2 ĐIỂM)
Một lần Mr. Bean được bạn gái gửi cho một dãy ký tự S độ dài n chỉ gồm
các chữ cái in hoa (‘A’...’Z’). Bạn gái nhờ Mr. Bean xác định "Độ phân biệt"
của dãy ký tự trên. Trong đó Độ phân biệt của dãy ký tự là số nguyên dương l
nhỏ nhất sao cho tất cả các xâu con của S độ dài l là đôi một phân biệt.
Chẳng hạn với n = 7; S = 'ABCDABC' thì l = 4 do tất cả các xâu con độ dài
4 đều phân biệt. Bạn hãy giúp Mr. Bean việc đó.
Dữ liệu:
 Dòng 1: số nguyên dương n (n ≤ 100).
 Dòng 2: chứa xâu ký tự S
Kết quả: Gồm một dòng duy nhất ghi một số nguyên duy nhất là "Độ phân biệt"
của dãy ký tự S.
Ví dụ:
DIFFSSTR.INP DIFFSSTR.OUT
7 4
ABCDABC

HẾT

You might also like