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ố t[r]
Trang 11
SỞ GIÁO DỤC VÀ ĐÀO TẠO THI CHỌN ĐỘI TUYỂN HỌC SINH GIỎI QUỐC GIA
ĐỀ 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ả
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
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]
Trang 22
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ì
5
30
70
20
50
40
2 100
3 110
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ỳ
16 madambobseesanna
4 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: