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
Trường Thpt Sầm Sơn Nhóm: Tin Học Đề thi gồm 3 trang Đề Thi Kscl Học Sinh Giỏi Khối 12 Lần 1 NĂM HỌC: 2023 -2024 Môn: Tin Học Thời gian làm bài: 150 phút