Tuyển tập đề thi vào 10 chuyên tin tỉnh Khánh Hòa các năm gần đây. Gồm 4 đề thi từ năm 2019 đến năm 2022. Mỗi đề thi gồm Đề, Giải thuật, test chấm và bài làm của các thí sinh (có cả code bằng Pascal, C++, Python). GV và HS chỉ cần tải về làm thử và tham khảo.
Trang 1SỞ GIÁO DỤC VÀ ĐÀO TẠO KỲ THI TUYỂN SINH VÀO LỚP 10
Môn thi: TIN HỌC
(Thời gian: 150 phút, không kể thời gian phát đề)
TỔNG QUAN ĐỀ THI
(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 các bài toán sau:
Bài 1 (6,0 điểm) – LÁT GẠCH
Một cái sân hình chữ nhật có chiều ngang là n dm và chiều dọc là d dm Người ta cần lát
mặt sân bằng một loại gạch hình chữ nhật có chiều rộng là 1 dm và chiều dài là 2 dm Mỗi viên gạch có thể được lát ngang hoặc lát dọc tùy ý, miễn sao gạch phải phủ vừa đủ diện tích của sân Trong một số trường hợp, người ta phải cắt đôi viên gạch thành hai nửa viên hình vuông dùng để lát ô có diện tích bằng 1×1
Yêu cầu: Bạn hãy lập trình tính số viên gạch ít nhất cần phải cắt để lát đủ mặt sân.
Dữ liệu vào: Nhập từ bàn phím hai số nguyên n và d (0 < n, d ≤ 103) theo đúng thứ tự
Kết quả: In ra màn hình một số nguyên là số lượng viên gạch ít nhất cần phải cắt.
Ví dụ:
Nhập từ bàn phím In ra màn hình
Bài 2 (5,0 điểm) – ALIBABA
Alibaba nói rằng: anh ấy có n đồng tiền gồm ba loại là vàng, bạc và đồng, trong đó số đồng tiền vàng ít hơn số đồng tiền bạc là d và số đồng tiền bạc cũng ít hơn số đồng tiền đồng là d.
Yêu cầu: Bạn hãy lập trình xác định xem Alibaba nói có đúng không? Nếu anh ấy nói
đúng thì anh ấy đang có bao nhiêu đồng tiền vàng, bạc và đồng?
ĐỀ THI CHÍNH THỨC
Trang 2Dữ liệu vào: Nhập từ bàn phím hai số nguyên dương n và d (0 < d < n ≤109) theo đúng thứ tự
Kết quả: In ra màn hình ba số nguyên tương ứng là số đồng tiền vàng, bạc và đồng mà
Alibaba đang có Giữa các số cách nhau đúng một dấu cách Nếu bài toán không có lời giải (Alibaba nói sai) thì chỉ in ra số -1
Ví dụ:
Nhập từ bàn phím In ra màn hình
Nhập từ bàn phím In ra màn hình
Bài 3 (5,0 điểm) – TAM GIÁC
Cho một dãy gồm n số nguyên dương A 1 , A 2 ,…, A n Hãy chọn ra ba số trong dãy (mỗi số chỉ được chọn một lần) sao cho ba số được chọn là số đo độ dài tương ứng của ba cạnh tam giác có chu vi lớn nhất
Dữ liệu vào: Từ tệp văn bản TAMGIAC.INP gồm:
- Dòng đầu ghi số nguyên dương n (3 ≤ n ≤ 105);
- Dòng thứ hai ghi n số nguyên dương A 1 , A 2 , …, A n Mỗi số có giá trị không vượt quá 109 và giữa chúng cách nhau đúng một dấu cách
Kết quả: Ghi ra tệp văn bản TAMGIAC.OUT ba số nguyên thỏa mãn điều kiện bài toán
theo thứ tự từ lớn đến nhỏ và giữa các số phải cách nhau đúng một dấu cách Nếu không tìm được ba số thỏa mãn điều kiện bài toán thì ghi số -1
Ví dụ:
4
3 5 1 4
5 4 3
4
2 9 2 15
-1
Bài 4 (4,0 điểm) – XẾP TÁO
Siêu thị Big.C Nha Trang đang bày bán rất nhiều loại hoa quả, trong đó có n quả cam và
n quả táo được xếp thành một dãy rất dài Trong quá trình xếp, các nhân viên đã vô ý xếp
những quả cam và những quả táo không theo một thứ tự nhất định Quản lý siêu thị yêu cầu các nhân viên phải xếp lại sao cho chúng được xếp xen kẻ nhau, cứ một quả cam rồi lại đến một quả táo và ngược lại
Trang 3Các hành động lấy một quả cam hoặc quả táo ra khỏi dãy, dồn những quả bên trái hoặc bên phải về chỗ trống vừa lấy và chèn quả vừa lấy vào vị trí thích hợp được xem là một thao tác
Yêu cầu: Bạn hãy giúp người quản lý siêu thị tính xem cần ít nhất bao nhiêu thao tác để
xếp lại dãy quả cam và quả táo
Dữ liệu vào: Từ tệp văn bản XEPTAO.INP gồm:
- Dòng đầu ghi số nguyên dương n (n ≤ 106)
- Dòng thứ hai ghi 2.n ký tự ‘0’ và ‘1’, trong đó những ký tự ‘0’ biểu thị
cho vị trí các quả cam còn những ký tự ‘1’ biểu thị cho vị trí các quả táo
Kết quả: Ghi ra tệp văn bản XEPTAO.OUT một số nguyên duy nhất là số thao tác ít nhất
cần thực hiện để xếp lại dãy quả cam và quả táo theo đúng yêu cầu bài toán
Ví dụ:
3 100011
2
Lưu ý:
+ Thí sinh không sử dụng lệnh tạm dừng ở cuối chương trình (ví dụ: lệnh readln trong
PASCAL).
+ Thời gian chạy chương trình của mỗi bài cho mỗi test không vượt quá 01 giây.
- Giám thị không giải thích gì thêm.
- Họ và tên thí sinh:………SBD:………/Phòng:………….
- Giám thị 1:……….………….……Giám thị 2: … ………
Trang 4HƯỚNG DẪN Bài 1 LÁT GẠCH
Nhận xét: Đây là một bài có mức độ dễ, học sinh chỉ cần nắm được các kiến thức cơ bản của
ngôn ngữ lập trình Tuy nhiên bài này cũng yêu cầu một chút tư duy của học sinh khi đưa ra một cách đặt vấn đề để tránh hỏi trực tiếp “n × d là số chẵn hay lẻ”
Hướng dẫn: Kiểm tra tính chẵn lẻ của tích n × d
Bài 2 ALIBABA
Nhận xét:
Có lẽ mục đích của bài này chỉ là kiểm tra tư duy toán học của học sinh và câu lệnh if trong ngôn ngữ lập trình Tư duy toán học trong bài này cũng không vượt qua mức độ tư duy của học sinh lớp 5 Do vậy đây cũng là một bài dễ
Hướng dẫn: Tạm thời bỏ qua Tin học, hãy giải toán trước
Gọi a , b , c lần lượt là số đồng tiền vàng , bạc, đồng mà Alibaba có Suy ra a+b+c=n(1)
Theo giả thiết của đề bài:
c−b=d⇒ c=d +b
Thế vào phương trình (1) ta được: b−d +b+d+ b=n ⇒ 3× b=n(¿)
Để thỏa mãn điều kiện (¿) cần kiểm tra n mod 3=0 hay không
Nếu n mod 3=0 thì:
b=n÷3
c=b+d
Cần phải để ý ở điều kiện ¿, vì a>0 nên b>d
Bài 3 TAM GIÁC
Nhận xét:
Với 2 bài đầu tiên học sinh đã có thể dành được 6/11 điểm (đủ để trúng truyển) nên không
có gì bất ngờ khi bài 3 là một bài khó mang tính chất phân loại học sinh
Hướng dẫn:
Có thể phát biểu lại bài toán đơn giản hơn: Cho dãy số a1, a2, … , a n Hãy tìm bộ 3
(a i , a j , a k) ;i≠ j ≠ k sao cho đó là một tam giác đạt chu vi lớn nhất
Như vậy chỉ cần sử dụng 3 vòng lặp
i=1 → n−2 ;
∀ i: j=i+1→ n−1 ;
Trang 5∀ j :k= j+1→ n
Nếu (a i+a j+a k là 3 cạnh của tam giác) và (a i+a j+a k>Smax) thì
Smax=a i+a j+a k và lưu lại bộ 3 (a i , a j , a k) Tuy nhiên cách làm này không thể đạt 100% số điểm vì vượt quá yêu cầu 1s/test
Cách khác:
Để 3 số (a i , a j , a k) là tam giác có chu vi lớn nhất thì chúng phải là 3 số lớn nhất có thể Do vậy cần sắp xếp dãy số giảm dần (hoặc tăng dần tùy cách làm ở bước tiếp theo)
Sau khi sắp xếp giảm dần bộ 3 (a i , a i +1 ,a i+2) đầu tiên thỏa mãn điều kiện tam giác là kết quả của bài toán Chứng minh:
Giả sử các bộ 3 (a1, a2, a3), …(a i−1 , a i , a i+ 1) đều không phải là tam giác Lúc này xét tiếp bộ 3 (a i , a i +1 ,a i+2)
+ Nếu đây là một tam giác thì đó chính là tam giác có diện tích lớn nhất
+ Nếu đây không phải là tam giác thì a i+1+a i +2 ≤ a i Chắc chắn rằng cũng không thể tìm một
bộ 3 nào không liên tục, giả sử (a¿¿i, a i +1 , a k)k >i+2¿, để trở thành tam giác vì k >i+2 nên
a k ≤ a i +2 ⇒ a i+1+a k ≤ a i+1+a i+2<a i
Bài 4 XẾP TÁO
Nhận xét:
Một bài toán khá rắc rối khi đọc đề, học sinh nếu không tinh ý sẽ bị cuốn vào nội dung đề bài và làm theo cách mà đề bài hướng dẫn: tìm cách sắp xếp lại số táo và cam sao cho chúng
xem kẽ nhau bằng cách….Tuy nhiên đề bài chỉ yêu cầu “ít nhất bao nhiêu thao tác” chứ
không yêu cầu học sinh sắp xếp lại
Bài này không yêu cầu nhiều về kỹ thuật lập trình nhưng đòi hỏi học sinh phải có tư duy nhạy bén, khả năng phân tích và phán đoán tốt cũng như tính cẩn thận trong làm bài để không gặp phải lỗi đáng tiếc
Hướng dẫn:
Nhận thấy nếu có k số 0 liên tiếp nhau thì chỉ cần lấy k −1 số 0 đó để chèn vào các vị trí khác (hoặc: lấy k −1 số 1 khác chèn vào giữa k số 0) Lập luận tương tự với trường hợp k số 1
Do vậy cách làm khá đơn giản:
Đếm d 0 là số lượng các cặp số 0 đứng cạnh nhau, d 1 là số lượng các cặp số 1 đứng cạnh nhau Kết quả là max (d 0 , d 1)
Trang 6SỞ GIÁO DỤC VÀ ĐÀO TẠO KỲ THI TUYỂN SINH VÀO LỚP 10
Môn thi: TIN HỌC
(Thời gian: 150 phút, không kể thời gian phát đề)
TỔNG QUAN ĐỀ THI
(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 các bài toán sau:
Bài 1 (2,0 điểm): Trang trí hàng cây
Dọc theo một con đường thẳng người ta trồng một hàng gồm n cây xanh có khoảng cách đều nhau Để trang trí cho con đường vào ban đêm, người ta gắn lên hàng cây một số bóng đèn theo quy tắc xen kẽ, cứ hai cây liền kề nhau thì một cây được gắn đèn, một cây không gắn đèn Biết rằng để gắn một bóng đèn lên một cây thì cần chi phí với số tiền là x đồng
Yêu cầu: Hãy tính tổng chi phí để gắn được nhiều bóng đèn nhất cho hàng cây.
Dữ liệu vào: Từ tệp văn bản TRANGTRI.INP chỉ gồm một dòng ghi hai số nguyên n và
x cách nhau một dấu cách
Giới hạn:
+ 1 ≤n ≤ 109
+ 1 ≤ x ≤103
Kết quả: Ghi ra tệp văn bản TRANGTRI.OUT một số nguyên là kết quả tìm được của
bài toán
TRANGTRI.INP TRANGTRI.OUT
Bài 2 (3,0 điểm): Chi phiếu
Tí là tổng giám đốc một công ty lớn có rất nhiều đối tác làm ăn Hôm nay một đối tác yêu cầu Tí phải chuyển cho họ một số tiền d qua chi phiếu Trợ lý bảo rằng bàn phím máy tính in chi phiếu đã hỏng mất phím số 4 nên không thể in được số tiền trong chi phiếu vì giá trị của số tiền có chữ số 4
ĐỀ THI CHÍNH THỨC
Trang 7Tí là người thông minh nên đã gợi ý cho trợ lý khắc phục bằng cách in thành hai tờ sao cho tổng số tiền ghi trên hai tờ cộng lại đúng bằng d và giá trị tiền trên hai tờ lệch nhau ít nhất
có thể
Yêu cầu: Hãy giúp trợ lý tính số tờ tiền cần in trên hai tờ chi phiếu theo yêu cầu của Tí.
Dữ liệu vào: Từ tệp văn bản INSEC.INP chỉ ghi số nguyên dương d
Gới hạn: d ≤106
Kết quả: Ghi ra tệp văn bản INSEC.OUT hai số nguyên tìm được thỏa mãn yêu cầu bài
toán, số nhỏ hơn in trước số lớn hơn in sau và giữa chúng cách nhau một dấu cách
Ví dụ:
Bài 3 (2,5 điểm): Số lân cận
Độ lân cận của một số x với một số y được tính bằng công thức: d ( x , y )=¿x− y∨¿ Độ lân cận của một số với dãy số là độ lân cận nhỏ nhất của số đó với các số khác trong dãy Ví dụ, dãy gồm 4 số {3,8,2,10} thì độ lân cận của số 3 với ba số trong dãy {8,2,10} là d (3,8)=5; d (3,2)=1
; d (3,10)=7 Do vậy độ lân cận của 3 với dãy số đã cho là 1
Cho một dãy gồm n số nguyên a1, a2, … , a n
Yêu cầu: Hãy tính tổng độ lân cận của các số trong dãy số
Dữ liệu vào: Từ tệp văn bản LANCAN.INP gồm:
+ Dòng đầu tiên ghi số nguyên n là số lượng các số trong dãy
+ Dòng thứ hai ghi n số nguyên a1, a2, … , a n
Gới hạn:
+ 3 ≤ n≤ 105
+ 1 ≤ a i ≤ 106(i=1 … n)
Kết quả: Ghi ra tệp văn bản LANCAN.OUT một số nguyên duy nhất là tổng độ lân cận
của các số trong dãy
Ví dụ:
LANCAN.INP LANCAN.OUT
4
3 8 2 10
6
Giải thích ví dụ:
+ Độ lân cận của 3 với dãy {8,2,10}=1
+ Độ lân cận của 8 với dãy {3,2,10}=2
+ Độ lân cận của 2 với dãy {3,8,10}=1
+ Độ lân cận của 10 với dãy {3,8,2}=2
Như vậy tổng độ lân cận của các số trong dãy số đã cho là 1+2+1+2=6
Trang 8Bài 4 (2,5 điểm): Dán nhãn
Một dây chuyền sản xuất thiết bị vừa sản xuất được n sản phẩm và đã dán nhãn cho mỗi sản phẩm một mã số để tiện quản lý Mã số được dán cho mỗi sản phầm là một số nguyên dương và không không được có hai sản phẩm bất kỳ nào có mã số trùng nhau Không may là dây chuyền dán nhãn bị lỗi nên trong những sản phẩm đã dán nhãn có thể có nhiều sản phẩm được dán cùng một nhãn (có mã số giống nhau)
Yêu cầu: Hãy tìm xem trong n sản phẩm đã dán nhãn có ít nhất bao nhiêu sản phẩm cần dán lại để tất cả các sản phẩm đều có mã số khác nhau
Dữ liệu vào: Từ tệp văn bản DANNHAN.INP gồm:
+ Dòng đầu tiên ghi số nguyên dương n
+ Dòng thứ hai ghi n số nguyên dương được cách nhau một dấu cách là nhãn của n sản phẩm đã được dán
Giới hạn:
+ 1 ≤n ≤ 106
+ Nhãn của n sản phẩm là các số nguyên dương có giá trị không vượt quá 107
Kết quả: ghi ra tệp DANNHAN.OUT một số nguyên cho biết số lượng ít nhất sản phẩm
cần phải dán lại nhãn
Ví dụ:
7
1 2 2 4 2 5 1
3
Giải thích: Trong ví dụ trên cần dán lại một nhãn có mã số 1 và 2 nhãn có mã số 2, do
vậy số lượng ít nhất sản phẩm cần dán nhãn lại là 3
Lưu ý:
+ Thí sinh không sử dụng lệnh tạm dừng ở cuối chương trình (ví dụ: lệnh readln trong
PASCAL).
+ Thời gian chạy chương trình của mỗi bài cho mỗi test không vượt quá 01 giây.
- Giám thị không giải thích gì thêm.
- Họ và tên thí sinh:………SBD:………/Phòng:………….
- Giám thị 1:……….………….……Giám thị 2: … ………
Trang 9HƯỚNG DẪN Bài 1:
Để gắn được nhiều bóng đèn nhất lên hàng cây thì ta gắn lên các cây có vị trí 1, 3, 5, 7,
….nghĩa là các cây có vị trị lẻ Như vậy số lượng bóng đèn được sử dụng là sl=(n÷2+n mod 2)
Kết quả bài toán là: sl∗x
Bài 2:
Bài này cần tìm một cặp số x , y sao cho:
+ x ≤ y
+ y−x là nhỏ nhất
+ Chữ số 4 không xuất hiện trọng x và y
+ x + y=d
Với điều kiện như vậy ta có thể thấy bài này gần giống như bài 2 trong đề tuyển sinh năm 2018-2019 Tuy nhiên cách làm có khác:
Cho x thay đổi từ 1 đến d, với mỗi x cho y thay đổi từ x đến d, nếu cặp số ( x , y ) thỏa mãn các điều kiện trên thì lưu lại kết quả
Tuy nhiên với việc sử dụng hai vòng lặp như vậy sẽ không đảm bảo về mặt thời gian Ta có thể rút ngắn về một vòng lặp bằng cách tính y=d−x sau đó kiểm tra các điều kiện cần thiết
Để kiểm tra số 4 có nằm trong số x hay không ta có thể sử dụng phép toán ¿, mod hoặc chuyển qua kiểu xâu
Nhận xét thêm: Đây là một bài không khó về ý tưởng, thuật toán nhưng cần phải có kỹ thuật cài đặt tốt
Bài 3:
Cách 1: Làm theo cách tính có sẵn trong đề bài, tức là với mỗi số trong dãy thì tìm lân cận của
nó với các số còn lại
Tuy nhiên cách này sẽ không đảm bảo về mặt thời gian
Cách 2:
Nhận thấy rằng nếu sắp xếp dãy số lại theo thứ tự tăng/giảm dần thì lân cận của một số với dãy
số là lân cận của nó với số liền trước hoặc số liền sau nó Do vậy ta cần sắp xếp dãy số lại sau đó:
ans=|a1−a2|+|a n−1−a n|
Với mỗi i thì ans=ans+min (|a i−a i−1|,|a i−a i+ 1|)
Với cách này, học sinh cần phải biết thuật toán QuickSort để đảm bảo về mặt thời gian
Cách 3: Sử dụng thuật toán đếm phân phối
Với giới hạn 1 ≤ a i ≤ 106, ta sử dụng mảng b trong đó b i là số lần xuất hiện của số i trong mảng a Với mảng b có được ta có thể tính như sau:
ans=0
Cho i=1 .106
Trang 10Nếu b i ≥ 2 thì: bỏ qua trường hợp này vì có ít nhất hai số bằng i nên lân cận trường hợp này là 0
Nếu b i=1 thì:
Tìm j sao cho j<i và b j>0 Tìm k sao cho k >i và b k>0
ans=ans+min (i− j , k −i)
Khi cài đặt cần lưu ý đến việc có tìm được j , k hay không
Bài 4:
Nếu một nhãn nào đó được dán nhiều lần thì chỉ giữ lại 1 lần, còn các lần khác phải chuyển qua nhãn khác Do vậy cần phải đếm xem mỗi nhãn được dán bao nhiêu lần Bài toán này tương đương với việc đếm xem mỗi số xuất hiện bao nhiêu lần, giả sử một số nào đó trong dãy xuất hiện x lần thì phải chuyển x−1 qua loại nhãn khác
Bài toán này chỉ cần sử dụng thuật toán đếm phân phối Sau khi tạo được mảng b với ý nghĩa
b i là số lần xuất hiện của giá trị i trong mảng a thì tính như sau:
ans=0
Cho i=1 … 107
Nếu b i>1 thì ans=ans+b i−1
Trang 11SỞ GIÁO DỤC VÀ ĐÀO TẠO KỲ THI TUYỂN SINH VÀO LỚP 10
Năm học 2021-2022
Môn thi: TIN HỌC
Thời gian: 150 phút (không kể thời gian phát đề)
TỔNG QUAN ĐỀ THI
TT Tên bài Tệp chương trình Tệp dữ liệu vào Tệp kết quả
2 Lũy thừa của hai số ALTB.* ALTB.INP ALTB.OUT
3 Số nguyên tố đặc biệt SNTDB.* SNTDB.INP SNTDB.OUT
4 Dãy số lòng chảo DAYSOLC.* DAYSOLC.INP DAYSOLC.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 các bài toán sau:
Bài 1 (2,50 điểm): Cho kẹo
Ngày hôm nay Tí đi xem phim cùng Tèo Như thường lệ, Tí mang theo a gói kẹo cam
và b gói kẹo chanh, mỗi gói đều có k cái kẹo Trên đường đi Tí ăn hết x cái kẹo cam và y cái kẹo chanh Lúc đến rạp chiếu phim Tí chia đôi số kẹo mỗi loại thành hai phần rồi cho Tèo một phần sao cho độ chênh lệch số kẹo trong mỗi phần của Tí và Tèo là ít nhất Nếu có chênh lệch thì Tí sẽ lấy phần nhiều hơn
Yêu cầu: Hãy cho biết số kẹo mỗi loại còn lại của Tí là bao nhiêu sau khi đã cho Tèo.
Dữ liệu vào: Từ tệp văn bản CHOKEO.INP gồm 5 số nguyên dương a , b , k , x , y được ghi trên một dòng và giữa các số cách nhau một dấu cách Các số trong tệp có giá trị không vượt quá 100
Kết quả: Ghi vào tệp CHOKEO.OUT hai số nguyên trên một dòng theo thứ tự là số
kẹo cam và kẹo chanh của Tí sau khi đã chia cho Tèo Giữa hai số cách nhau một dấu cách
Ví dụ:
Bài 2 (3,00 điểm): Lũy thừa của hai số
Cho hai số nguyên dương n và k Hãy tìm hai số nguyên dương a và b sao cho a b=n và
Dữ liệu vào: Từ tệp văn bản ALTB.INP gồm một dòng ghi hai số nguyên dương nvà
k (n ≤1019, k ≤20) và giữa hai số được ghi cách nhau một dấu cách
ĐỀ THI CHÍNH THỨC