SỞ GIÁO DỤC VÀ ĐÀO TẠO THI CHỌN ĐỘI TUYỂN HỌC SINH GIỎI QUỐC GIA
SÓC TRĂNG Năm 2018
¯¯¯¯¯¯¯¯¯¯¯ ¯¯¯¯¯¯¯¯ ĐỀ CHÍNH THỨC Môn: TIN HỌC (Thời gian làm bài 180 phút, không kể phát đề) ¯¯¯¯¯¯¯¯¯¯¯¯ Ngày thi thứ nhất: 15/9/2017 Đề thi này có 02 trang, gồm 03 câu
TỔNG QUAN NGÀY THI THỨ NHẤT
Câu Tên câu File chương trình File dữ liệu vào File kết quả 1 Ghép số nguyên dương C1GhepSo.* GhepSo.inp GhepSo.out 2 Trò chơi kéo co C2KeoCo.* KeoCo.inp KeoCo.out 3 Tách chuỗi đối xứng C3TachCDX.* TachCDX.inp TachCDX.out Dấu * được thay thế bởi PAS hoặc CPP của ngôn ngữ lập trình được sử dụng tương ứng là Pascal hoặc C++. Yêu cầu đặt tên file giống bảng trên. Hãy lập trình giải các câu hỏi sau:
Câu 1: (6,0 điểm) Ghép số nguyên dương
Trong giờ ra chơi Bi đố Bo như sau: Có hai số nguyên dương A và B, cần tạo ra số C bằng cách ghép các chữ số của A và B sao cho thứ tự các chữ số của A và B không thay đổi trên số C. Bạn hãy giúp Bo xây dựng số C sau đó tìm giá trị nhỏ nhất và lớn nhất của số C. Dữ liệu: vào từ tập tin văn bản GhepSo.inp: gồm một dòng duy nhất có 2 số nguyên dương A và B, với 1 ≤ A, B ≤ 108, dữ liệu đảm bảo không có các chữ số 0 vô nghĩa của A và B. Kết quả: ghi ra tập tin văn bản GhepSo.out: gồm - Dòng thứ nhất ghi giá trị của số A và số B. - Dòng thứ hai ghi giá trị nhỏ nhất của số C. - Dòng thứ ba ghi giá trị lớn nhất của số C. Ví dụ: GhepSo.inp GhepSo.out 28 41 So A = 28 va so B = 41 Gia tri nho nhat cua so C: 2418 Gia tri lon nhat cua so C: 4281
Câu 2: (7,0 điểm) Trò chơi kéo co
Trong buổi sinh hoạt ngoài trời, thầy chủ nhiệm chia học sinh thành hai đội để chơi kéo co. Bạn hãy giúp thầy tìm cách chia hai đội sao cho công bằng nhất theo cả hai điều kiện là tổng khối lượng các thành viên trong hai đội có sự chênh lệch là ít nhất và số thành viên của hai đội chênh lệch nhau không quá 1 người. Dữ liệu: vào từ tập tin văn bản KeoCo.inp: gồm - Dòng đầu là một số nguyên dương N (2 ≤ N ≤ 100) là số học sinh trong lớp. - N dòng tiếp theo cho biết khối lượng của từng học sinh, khối lượng có giá trị trong khoảng [20..150]. 1 Kết quả: ghi ra tập tin văn bản KeoCo.out: hai dòng được sắp xếp không giảm theo tổng khối lượng mỗi đội, mỗi dòng thể hiện tổng số thành viên và khối lượng của mỗi đội. Nếu có nhiều cách chia thì in ra 1 cách chia bất kì. Ví dụ: KeoCo.inp KeoCo.out 5 2 100 30 3 110 70 20 50 40
Câu 3: (7,0 điểm) Tách chuỗi đối xứng
Chuỗi đối xứng (palindrome) là chuỗi mà nếu ta đọc từ trái sang phải hay từ phải sang trái thì đều giống nhau. Ví dụ chuỗi 'xyzyx' là chuỗi đối xứng. Một ký tự duy nhất cũng được gọi là chuỗi đối xứng. Một chuỗi S bất kỳ luôn có thể tách được từ các chuỗi đối xứng. Ví dụ chuỗi ‘madambobseesanna’ có một số cách tách như sau: 1) ‘m’ + ‘a’ + ‘d’ + ‘a’ + ‘m’+ ‘b’ + ‘o’ + ‘b’ + ‘s’ + ‘e’ + ‘e’ + ‘s’ + ‘a’ + ‘n’ + ‘n’ + ‘a’ 2) ‘madam’ + ‘bob’ + ‘sees’ + ‘anna’ 3) ‘madam’ + ‘bob’ + ‘s’ + ‘ee’ + ‘s’ + ‘anna’ 4) ‘m’ + ‘ada’ + ‘m’ + ‘b’ + ‘o’ + ‘b’ + ‘sees’ + ‘anna’ Tổng quát S = P1 + P2 +...+ Pk, với P1, P2,... , Pk là các chuỗi đối xứng. Bạn hãy tìm cách biểu diễn S sao cho k là bé nhất. Trong ví dụ trên k = 4 (cách tách số 2). Dữ liệu: vào từ tập tin văn bản TachCDX.inp: - Dòng thứ nhất là số nguyên N (1 ≤ N ≤ 2000) biểu thị chiều dài chuỗi S. - Dòng thứ hai là chuỗi S gồm N ký tự là các chữ cái la tinh thường từ ‘a’ đến ‘z’. Kết quả: ghi ra tập tin văn bản TachCDX.out: - Dòng thứ nhất là số nguyên k. - Trong k dòng tiếp theo, tại dòng thứ i là chuỗi đối xứng Pi. Nếu có nhiều cách biểu diễn, chỉ cần in ra một cách bất kỳ. Ví dụ: TachCDX.inp TachCDX.out 16 4 madambobseesanna madam bob sees anna
--- HẾT ---
Họ tên thí sinh: ................................................Số báo danh: ..................................................
Chữ ký của Giám thị 1: .................................. Chữ ký của Giám thị 2: ..................................