Bỏ qua để đến nội dung

HSG lớp 9 TP. Hồ Chí Minh 2019-2020

SỞ GIÁO DỤC VÀ ĐÀO TẠO THÀNH PHỐ HỒ CHÍ MINH ĐỀ CHÍNH THỨC
(Đề thi gồm 02 trang)

KỲ THI HỌC SINH GIỎI LỚP 9 THCS Khóa ngày 10.06.2020
Môn thi: Tin học
Thời gian làm bài: 120 phút (không kể thời gian phát đề)


Bài Tên chương trình Tập tin dữ liệu Tập tin kết quả
TẠO CÂU ĐỐ CAUDO.* CAUDO.INP CAUDO.OUT
TÁCH DÃY SỐ TACHSO.* TACHSO.INP TACHSO.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++.

Hãy lập trình giải 2 bài toán sau:

Kỳ nghỉ vừa rồi kéo dài nên Nhím đã làm hết các câu đố trong sách mẹ mua cho. Không muốn Nhím xem truyền hình nhiều, anh Gấu nghĩ cách lấy các câu đố trong sách của em để tạo ra nhiều câu khác tương tự cho Nhím luyện tập thêm. Trong câu đố như hình bên, người ta đã dùng hình tròn và hình tam giác để mô tả quy luật. Nhím tìm được quy luật và điền thay cho dấu chấm hỏi ở dòng cuối là 9.

Câu đố gồm 7 dòng, mỗi dòng 5 hình tròn hoặc tam giác: OOOOO = 0, OOOOA = 1, OOOAO = 2, OOOAA = 3, OOAOA = 5, OOAAO = 6, OAOOA = ?

(Các con số viết tay nhỏ trên hình là ghi chú của người sưu tầm, không thuộc đề.)

Anh Gấu nhận thấy chỉ cần dùng 2 ký tự O và A (thay thế cho hình tròn và tam giác) cùng với một số cần tìm là có thể tạo ra câu đố mới cho Nhím rồi.

Yêu cầu: Bạn hãy giúp Gấu viết chương trình dùng 2 ký tự chữ hoa là O, A cùng với một giá trị đáp án cho trước để tạo ra vế bên trái dấu bằng của câu đố.

Dữ liệu vào: Từ tập tin văn bản CAUDO.INP, gồm một dòng duy nhất ghi một số nguyên dương N (N ≤ 10⁸) là đáp án của câu đố.

Kết quả: Ra tập tin văn bản CAUDO.OUT gồm một dòng duy nhất ghi các ký tự O và A. Mỗi ký tự cách nhau một khoảng trắng. Số lượng ký tự cần ghi tùy thuộc vào giá trị của N nhưng tối thiểu phải gồm 5 ký tự.

Ví dụ:

CAUDO.INP CAUDO.OUT
4 O O A O O
18 A O O A O

Tiếp theo, anh Gấu hướng dẫn cho Nhím so sánh và phân biệt các số. Anh Gấu viết cho Nhím một dãy số và yêu cầu em tách từ bên trái sang bên phải dãy số thành các số có nghĩa khác nhau tăng dần với độ chênh lệch giữa hai số được tách liền nhau là nhỏ nhất nhưng không được đảo thứ tự các chữ số trong dãy ban đầu cũng như không được bỏ chữ số nào cho đến khi không thể tách thêm.

Anh Gấu lấy ngày sinh của mình làm dãy số là 23072007, Nhím tách được 3 số là 2, 30, 72 và dãy số ban đầu còn lại các chữ số 007 không thể tách thêm.

Yêu cầu: Bạn hãy viết chương trình tách số từ một dãy số cho trước theo quy tắc trên.

Dữ liệu vào: Từ tập tin văn bản TACHSO.INP gồm một dãy các chữ số cần tách ghi liên tiếp nhau (số lượng các chữ số tối đa là 10⁴ chữ số), chữ số đầu tiên của dãy luôn khác 0.

Kết quả: Ra tập tin văn bản TACHSO.OUT gồm hai dòng:

  • Dòng thứ nhất ghi duy nhất một số nguyên dương cho biết số lượng các số tách được từ dãy đã cho.
  • Dòng thứ hai ghi lại các số đã tách được theo thứ tự từ nhỏ đến lớn, mỗi số cách nhau một khoảng trắng.

Ví dụ:

TACHSO.INP TACHSO.OUT
23072007 3
2 30 72