Trang 1 / 3 SỞ GIÁO DỤC VÀ ĐÀO TẠO HÀ TĨNH (Đề thi có 02 trang, gồm 03 bài) KỲ THI CHỌN ĐỘI TUYỂN DỰ THI HỌC SINH GIỎI QUỐC GIA LỚP 12 THPT NĂM HỌC 2012-2013 MÔN THI: TIN HỌC - Vòng 2 Thời gian: 180 phút (không kể thời gian giao đề) Ngày thi thứ hai: 22/09/2012 TỔNG QUAN NGÀY THI THỨ HAI Tên bài File chương trình File dữ liệu vào File kết quả Bài 1 Từ chuẩn TUCHUAN.PAS TUCHUAN.INP TUCHUAN.OUT Bài 2 Tìm mật khẩu PASSWROD.PAS PASSWROD.INP PASSWROD.OUT Bài 3 Quà Tết Trung thu TIMQUA.PAS TIMQUA.INP TIMQUA.OUT Hãy sử dụng ngôn ngữ lập trình pascal hoặc free pascal lập trình giải các bái toán sau: Bài 1. (6 điểm) Từ chuẩn Một từ loại M là một dãy các chữ số, mỗi chữ số nằm trong khoảng từ 1 đến M. Số lượng các chữ số có mặt trong một từ được gọi là chiều dài của từ đó. Từ loại M được gọi là từ chuẩn nếu nó không chứa hai khúc (từ con) liền nhau mà giống nhau. Ví dụ: 12131231 là từ chuẩn loại 3, chiều dài 8. 12132131 không phải là từ chuẩn vì nó chứa liên tiếp hai từ con giống nhau là 213. Tương tự, 12332 không phải là từ chuẩn vì chứa liên tiếp hai từ con giống nhau là 3. Yêu cầu: Với mỗi giá trị N và M cho trước, tìm và ghi vào tệp văn bản tên TUCHUAN.OUT một từ chuẩn loại M có chiều dài N. Dữ liệu: Vào từ file văn bản TUCHUAN.INP gồm 2 số nguyên dương N và M (M < N, 1 ≤ N ≤ 10000) được ghi trên một dòng, mỗi số cách nhau ít nhất là một ký tự trống. Kết quả: Ghi ra file văn bản TUCHUAN.OUT một dòng chứa một từ chuẩn. Ví dụ: TUCHUAN.INP TUCHUAN.OUT 15 3 121312313231232 Bài 2. (7 điểm) Tìm mật khẩu Việc bảo vệ máy tính của mình để hạn chế người khác thâm nhập vào là một vấn đề đặt ra cho mọi nguời sử dụng máy tính. Để tăng tính an toàn trong lưu trữ, một nguời đã quyết định dấu mật khẩu truy cập máy tính của mình vào một xâu T với một quy ước sao cho khi cần anh ta có thể lấy lại đuợc mật khẩu từ T như sau: Là một người yêu thích số học anh ta thường chọn mật khẩu P là một số nguyên tố và đem dấu vào một xâu ký tự T sao cho P chính là số nguyên tố có giá trị lớn nhất trong số các số nguyên ĐỀ THI CHÍNH THỨC Trang 2 / 3 tố tạo được từ các xâu con của T (xâu con của một xâu ký tự T là một chuỗi liên tiếp các ký tự trong T). Ví dụ: xâu T= “timpassword232432fsdgd45435dsfdsf” chứa mật khẩu là 43 vì T chứa các xâu con ứng với các số nguyên tố 2, 3, 23, 43, và 5. Yêu cầu: Cho một xâu ký tự T chiều dài không quá 250 ký tự. Tìm mật khẩu P đã dấu trong xâu T biết P có giá trị nhỏ hơn 10 5 . Dữ liệu cho đảm bảo T chứa ít nhất 1 số nguyên tố. Dữ liệu: Vào từ file văn bản PASSWORD.INP gồm 1 dòng duy nhất là xâu T. Kết quả: Ghi ra file văn bản PASSWORD.OUT chứa số P tìm được. Ví dụ: PASSWORD.INP PASSWORD.OUT timpassword232432fsdgd45435dsfds f 43 Bài 3. (7 điểm) Quà Tết Trung thu Để vui Tết Trung thu cho các cháu ban tổ chức thành phố X quyết định phát quà cho mỗi cháu bằng cách tổ chức một trò chơi trên lưới ô vuông như sau: Vẽ một hình chữ nhật kích thước M x N ô vuông, Các dòng được đánh số từ 1 đến M, các cột được đánh số từ 1 đến N (các số được đánh từ trên xuống dưới và từ trái sang phải). mỗi ô nằm trên giao của dòng i và cột j được gọi là ô (i,j) ghi một số nguyên dương A[i,j], (1 ≤ i ≤ M, 1 ≤ j ≤ N) chính là số món quà trên ô đó. Có thể di chuyển từ một ô sang ô thuộc cột bên phải cùng dòng hoặc chênh lệch một dòng. Yêu cầu: Tìm cách giúp các cháu di chuyển từ một ô nào đó của cột bên trái (cột xuất phát) đến một ô nào đó thuộc cột N (cột đích) sao cho tổng các số của ô đi qua là lớn nhất vì đó chính là tổng số món quà mà các cháu được nhận. Dữ liệu: Vào từ file văn bản TIMQUA.INP dòng đầu tiên là 2 số nguyên dương M, N (M, N ≤ 100). M dòng tiếp theo mỗi dòng N số nguyên A[i,j] (0 ≤ A[i,j] ≤ 50) của hình chữ nhật. Kết quả: Ghi ra file văn bản TIMQUA.OUT gồm 2 dòng: - Dòng thứ nhất ghi tổng các số của các ô đi qua. - Dòng thứ hai ghi N số là chỉ số dòng các ô đi qua từ cột 1 đến cột N. Ví dụ: Hết • Thí sinh không được sử dụng tài liệu. • Cán bộ coi thi không giải thích gì thêm. TIMQUA.INP TIMQUA.OUT 3 5 7 3 8 1 5 8 8 3 12 1 6 15 10 5 2 50 2 3 3 2 1 Trang 3 / 3 Họ và tên thí sinh…………………………………………… Số báo danh…………………… SỞ GIÁO DỤC VÀ ĐÀO TẠO HÀ TĨNH KỲ THI CHỌN ĐỘI TUYỂN DỰ THI HỌC SINH GIỎI QUỐC GIA LỚP 12 THPT NĂM HỌC 2012-2013 MÔN THI: TIN HỌC - Vòng 2 HƯỚNG DẪN CHẤM VÒNG 2 Tên bài File chương trình File dữ liệu vào File kết quả Bài 1 Từ chuẩn TUCHUAN.PAS TUCHUAN.INP TUCHUAN.OUT Bài 2 Tìm mật khẩu PASSWROD.PA PASSWROD.IN PASSWROD.OU Bài 3 Quà Tết Trung thu TIMQUA.PAS TIMQUA.INP TIMQUA.OUT Tất cả các bài đều chấm bằng bộ test, mỗi bộ test đúng được một điểm. Nếu không chạy được chương trình thì căn cứ vào bài làm của học sinh để cho điểm nhưng tối đa không quá 2 điểm trên bài. - Bài 1: 6 test 6 điểm. - Bài 2: 7 test 7 điểm. - Bài 3: 7 test 7 điểm. Hướng dẫn chương trình tham khảo Bài 1. (6 điểm) Từ chuẩn Ta dùng mảng v[1 n] để lưu từ cần tìm. Tại mỗi bước i ta xác định giá trị v[i] trong khoảng 1 m sao cho v[1 i] là từ chuẩn. Điều kiện P: v[1 i] là từ chuẩn. Điều kiện Q: Dừng thuật toán theo một trong hai tình huống sau đây: nếu i = n thì bài toán có nghiệm v[1 n]. nếu i = 0 thì bài toán vô nghiệm. TimTu1: Tìm một nghiệm. Hàm Tim hoạt động như sau: duyệt các giá trị tại vị trí v[i] của từ v[1 i] kể từ v[i] + 1 đến m sao cho v[1 i] là từ chuẩn. Tim = true nếu tồn tại một giá trị v[i] như vậy. Ngược lại, nếu với mọi v[i] = v[i] + 1 m từ v[1 i] đều không chuẩn thì Tim = false. Để kiểm tra tính chuẩn của từ v[1 i], ta lưu ý rằng từ v[1 i-1] đã chuẩn (tính chất P), do đó chỉ cần khảo sát các cặp từ có chứa v[i], cụ thể là khảo sát các cặp từ có chiều dài k đứng cuối từ v. Đó là các cặp từ v[(i–k–k+1) (i–k)] và v[i–k+1 i] với k = 1 (i div 2). Nếu với mọi k như vậy hai từ đều khác nhau thì Chuan=true. Ngược lại, Chuan = false. Hàm Bang(i,k) kiểm tra xem hai từ kề nhau chiều dài k tính từ i trở về trước có bằng nhau hay không. Hai từ được xem là khác nhau nếu chúng khác nhau tại một vị trí nào đó. Bài 2. (7 điểm) Tìm mật khẩu Ta duyệt qua tất cả các xâu con của xâu T mà có thể tạo thành một số và kiểm tra số đó có phải số nguyên tố hay không. Để duyệt qua các xâu con, ta duyệt qua vị trí đầu: Trang 4 / 3 for i:=1 to length(t) do {i là vị trí đầu của xâu con} Với mỗi vị trí đầu i, ta duyệt qua vị trí cuối của xâu con: j:=i; while (j<=length(t)) do begin inc(j); end; Có hai điều kiện để ta dừng quá trình duyệt một xâu con với vị trí đầu là i: • Gặp một ký tự không phải chữ số: if (t[j]<'1') or (t[j]>'9') then break; • Số tạo thành lớn hơn hoặc bằng 10 5 , vì đề bài đã nêu rõ P có giá trị nhỏ hơn 10 5 : if v>=100000 then break; Khi đọc được một chữ số mới, ta nhân số hiện tại với 10 rồi cộng thêm chữ số mới: v:=v*10+ord(t[j])-ord('0'); Nếu số thu được là số nguyên tố và lớn hơn kết quả tốt nhất tìm được thì cập nhật kết quả: if nguyento(v) then if (v>kq) then kq:=v; Bài 3. (7 điểm) Quà Tết Trung thu Giả sử các số cho trong mảng A[1 M,1 N]. Dùng mảng B[1 M,1 N] để xây dựng nhãn cho từng ô theo công thức truy hồi. F[i,j] có giá trị bằng tổng các số trên các ô đi qua theo con đường tốt nhất từ một ô thích hợp thuộc cột 1 đến ô (i,j) thuộc dòng i cột j. Nhãn của các ô thuộc cột 1 bằng chính giá trị các ô đó. Các ô còn lại, lần lượt từ cột 2 đến cột n được xây dựng theo công thức truy hồi sau: ],[]}1,1[],1,[],1,1[{],[ kiAkiBkiBkiBMaxkiB +−+−−−= Ngoài ra, dùng mảng hai chiều T[1 M,1 N] để ghi lại chỉ số dòng của ô thuộc cột j-1 đi tới ô (i,j) và mảng một chiều KQ[1 N] để ghi lại chỉ số dòng của các ô đi qua từ cột 1 đến cột n trong phương án tối ưu. Hoặc sau khi tạo ra mảng B, ta tìm phần tử Max trên cột N, từ phần tử này truy vết về những phần tử thuộc dòng N-1, N-2,… về đến phần tử thuộc cột xuất phát (cột 1). Cũng lưu ý rằng có thể không cần dùng mảng B[1 M,1 N] bằng cách ghi giá trị của B[1 M,1 N] đè dần lên mảng A[1 M,1 N] bắt đầu từ cột 2 đến cột N. . TẠO HÀ TĨNH (Đề thi có 02 trang, gồm 03 bài) KỲ THI CHỌN ĐỘI TUYỂN DỰ THI HỌC SINH GIỎI QUỐC GIA LỚP 12 THPT NĂM HỌC 2 01 2- 2013 MÔN THI: TIN HỌC - Vòng 2 Thời gian: 180 phút (không kể thời gian giao. 3 12 1 6 15 10 5 2 50 2 3 3 2 1 Trang 3 / 3 Họ và tên thí sinh ………………………………………… Số báo danh…………………… SỞ GIÁO DỤC VÀ ĐÀO TẠO HÀ TĨNH KỲ THI CHỌN ĐỘI TUYỂN DỰ THI HỌC SINH GIỎI QUỐC GIA LỚP 12. ĐÀO TẠO HÀ TĨNH KỲ THI CHỌN ĐỘI TUYỂN DỰ THI HỌC SINH GIỎI QUỐC GIA LỚP 12 THPT NĂM HỌC 2 01 2- 2013 MÔN THI: TIN HỌC - Vòng 2 HƯỚNG DẪN CHẤM VÒNG 2 Tên bài File chương trình File dữ liệu vào File