SỞ GIÁO DỤC VÀ ĐÀO TẠO HÀ TĨNH (Đề thi có 2 trang) KỲ THI CHỌN HỌC SINH GIỎI TỈNH CẤP THPT NĂM HỌC 2012 - 2013 MÔN THI: TIN HỌC - LỚP 10 Thời gian: 180 phút (Không kể thời gian giao đề) Hãy trình bày thuật toán giải các bài toán sau đây: BÀI 1: SỐ THÂN THIỆN Đang tìm hiểu các thuật toán về số tự nhiên, Nguyên phát hiện ra số tự nhiên có rất nhiều tính chất thú vị. Ví dụ số hoàn hảo có tính chất: tổng các ước bằng 2 lần số đó, như số 6, số 24… Nhiều số tự nhiên khi tìm ước chung lớn nhất với số đảo ngược của nó bằng 1, những số như thế được gọi là số thân thiện. Chẳng hạn số 23, số đảo ngược của nó là 32, hai số này có ước chung lớn nhất là 1 nên số 23 là số thân thiện và 32 cũng là số thân thiện. Yêu cầu: Cho 2 số tự nhiên a, b (10 ≤ a ≤ b ≤ 10 4 ). Hãy đếm xem trong đoạn từ a đến b có bao nhiêu số thân thiện. Ví dụ: Dữ liệu vào Kết quả Giải thích 19 29 4 Đó là các số: 19, 23, 25, 29 BÀI 2: SỐ TỰ NHIÊN NHỎ NHẤT Nam một người bạn của Nguyên đang tìm cách giải một bài toán liên quan tới số tự nhiên và cần sự giúp đỡ của Nguyên, nhưng thử thách lần này là một dãy gồm N số tự nhiên bất kỳ nằm trong đoạn từ 0 tới 10 9 , tìm số tự nhiên nhỏ nhất không có trong dãy số đó. Vì số lượng các số tự nhiên trong dãy số đã cho có thể lên tới 10 6 phần tử nên việc tìm thủ công là không thể mà cần một thuật toán để cài đặt vào máy tính và nhờ máy tính tìm giúp. Yêu cầu: Cho một dãy A gồm N (1 ≤ N ≤ 10 6 ) số tự nhiên. Hãy tìm số tự nhiên nhỏ nhất không xuất hiện trong dãy A. Ví dụ: Dữ liệu vào Kết quả N= 5 Dãy số: 5 4 2 3 1 0 N= 9 Dãy số: 2 4 0 3 1 2 6 2 8 5 1 ĐỀ CHÍNH THỨC BÀI 3: SỐ LƯỢNG NHÓM ĐỀ TÀI Nhà trường phát động phong trào đăng ký làm sáng tạo khoa học kỹ thuật, tất cả các bạn trong lớp của Nguyên đều tích cực tham gia và được phân công vào các nhóm đề tài. Mỗi nhóm đề tài được ký hiệu: <Tên nhóm> <Số thành viên>, ví dụ Nguyên được phân công vào nhóm TIN gồm 3 thành viên thì ký hiệu nhóm là TIN 3. Danh sách được lập ra gồm ký hiệu nhóm và tên thành viên, nhưng trong quá trình in ấn cột ký hiệu nhóm bị mờ <tên nhóm> và không đọc được chỉ còn lại <số thành viên>. Ví dụ: Ký hiệu Thành viên hiệu Thành viên TIN 3 Việt 3 Việt TOAN 2 Tuấn 2 Tuấn TIN 3 Thái Do lỗi in ấn → 3 Thái TIN 3 Anh 3 Anh TOAN 2 Chính 2 Chính Yêu cầu: Cho danh sách gồm n học sinh và số thành viên của nhóm tương ứng với từng học sinh. Hãy xác định số lượng nhóm đề tài đã được phân công. Dữ liệu đảm bảo bài toán có nghiệm. Ví dụ: Dữ liệu vào Kết quả N= 5 3 2 3 3 2 2 N= 10 5 1 2 5 5 2 5 5 2 2 4 HẾT Ghi chú: - Ngoài cách trình bày bằng phương pháp liệt kê hoặc sơ đồ khối, thí sinh có thể sử dụng ngôn ngữ mô phỏng PASCAL hoặc ngôn ngữ PASCAL để trình bày thuật toán với dữ liệu vào/ra từ màn hình. - Thí sinh không được sử dụng tài liệu. - Giám thị không giải thích gì thêm. 2 - S GI O D C V O T OỞ Á Ụ ÀĐÀ Ạ H T NHÀ Ĩ K THI CH N H C SINH GI I T NH C PỲ Ọ Ọ Ỏ Ỉ Ấ THPT N M H C 2012 - 2013Ă Ọ H NG D N CH M THIƯỚ Ẫ Ấ Môn thi: Tin h c 10ọ G i ý áp ánợ đ Thang i mđể Câu 1 6.0 - Xác nh b i toán:đị à Input: Hai s a, bố (10 a b 10≤ ≤ ≤ 4 ) Output: S l ng s thân thi n thu c o n [a,b]ố ượ ố ệ ộ đ ạ 0.5 - Ý t ng: ưở Dùng 1 bi n ế dem l u s l ng s thân thi nđể ư ố ượ ố ệ Xét l n l t các s t nhiên i t ầ ượ ố ự ừa t i ớ b V i m i s i xác nh s t nhiên j l o ng c c a iớ ỗ ố đị ố ự àđả ượ ủ N u UCLN(i,j)= 1 thì t ng bi n ế ă ế dem lên 1 K t qu b i toán l ế ả à àdem 1.0 - Thu t toán:ậ B c 1. Nh p hai s a v b;ướ ậ ố à B c 2. iướ a; dem 0; B c 3. N u i>b thì chuy n n b c 13;ướ ế ể đế ướ B c 4. kướ i, Songuoc0; B c 5. ướ N u k = 0 thì chuy n n b c 8;ế ể đế ướ B c 6. Songuocướ Songuoc*10+k mod 10; B c 7. k ướ k div 10; r i quay l i b c 5ồ ạ ướ B c 8. k ướ i; B c 9. N u k = Songuoc thì chuy n n b c 11;ướ ế ể đế ướ B c 10. N u k > Songuoc thì k ướ ế k - Songuoc Ng c l i Songuoc ượ ạ Songuoc – k, r i quay l i b c 9;ồ ạ ướ B c 11. N u k=1 thì dem ướ ế dem+1; B c 12. iướ i+1 v quay l i b c 3;à ạ ướ B c 13. a ra k t qu ướ Đư ế ảdem r i k t thúc.ồ ế 4.5 Theo yêu c u b i cho th y các b c gi i r t rõ r ng nên trong thu t toán có th chiaầ đề à ấ ướ ả ấ à ậ ể nh t ng ph n cho i m. ỏ ừ ầ để để B c 1: Nh p d li u: 0,5 i mướ ậ ữ ệ để B c 2, b c 3, b c 12 th hi n vòng l p: 1 i mướ ướ ướ ể ệ ặ để B c 4 t i b c 7 tính s o ng c: 1 i mướ ớ ướ ốđả ượ để B c 8 t i b c 11 xác nh UCLN: 1,5 i mướ ớ ướ đị để B c 13: a ra k t qu : 0,5 i m ướ Đư ế ả để Câu 2. 7.0 - Xác nh b i toán:đị à Input: N v dãy A g m N s t nhiênà ồ ố ự Output: S t nhiên nh nh t không xu t hi n trong dãy Aố ự ỏ ấ ấ ệ 0.5 - Ý t ng:ưở Nh n xét:ậ S t nhiên nh nh t luôn n m trong o n t 0 t i ố ự ỏ ấ ằ đ ạ ừ ớ N. Do v y dùng dãy B[0 N] ánh d u nh ng s ã có trong ậ đểđ ấ ữ ốđ dãy A n m trong o n t 0 t i N. Ban u ánh d u t t c các ằ đ ạ ừ ớ đầ đ ấ ấ ả ph n t c a dãy B có giá tr l False. Ti p theo ánh d u trong ầ ử ủ ị à ế đ ấ dãy B nh ng ph n t có trong dãy A nh sau:ữ ầ ử ư Xét i: 1 t i N, n u Aớ ế i <=N thì ánh d u B[Ađ ấ i ]True Tìm s t nhiên u tiên j trong dãy B m Bj=False, v i j: 0 ố ự đầ à ớ t i Nớ 1.5 3 - Thu t toán:ậ B c 1. Nh p N v dãy Aướ ậ à 1 , A 2 , ,A N ; B c 2. iướ 0; B c 3. N u i>N thì chuy n n b c 6;ướ ế ể đế ướ B c 4. Bướ i False; B c 5. iướ i+1; r i quay l i b c 3;ồ ạ ướ B c 6. iướ 1; B c 7. N u i>N thì v chuy n n b c 10;ướ ế à ể đế ướ B c 8. N u Aướ ế i <=N thì B[A i ]true; B c 9. iướ i+1 v quay l i b c 7;à ạ ướ B c 10. jướ 0; B c 11. N u Bướ ế j =false thì thông báo j, r i k t thúc;ồ ế B c 12. jướ j+1 v quay l i b c 11;à ạ ướ 5.0 Câu 3. 7.0 - Xác nh b i toán:đị à Input: N v dãy A g m N s nguyên d ng l u s th nh viênà ồ ố ươ ư ố à Output: S l ng nhóm t iố ượ đề à 0.5 - Ý t ng: ưở Xét l n l ng t ng h c sinh:1 Nầ ượ ừ ọ ng v i t ng h c sinh ánh d u các h c sinh cùng nhóm, ng th i Ứ ớ ừ ọ đ ấ ọ đồ ờ t ng bi n ă ế dem lên 1. K t qu b i toán l ế ả à àdem 1.5 - Thu t toán:ậ B c 1. ướ Nh p N v dãy Aậ à 1 , A 2 , ,A N ; B c 2. iướ 1; dem 0; B c 3. N u i>N thì chuy n n b c 11;ướ ế ể đế ướ B c 4: N u Aướ ế i <=0 thì chuy n sang b c th 10;ể ướ ứ B c 5. dem ướ dem+1; B c 6. Kướ A i ; j i; d 0; B c 7. N u (j>N) ho c (d=K) thì v chuy n n b c 10;ướ ế ặ à ể đế ướ B c 8. N u Aướ ế j =k thì A j -K; d d+1; B c 9. jướ j+1 v quay l i b c 7;à ạ ướ B c 10. iướ i+1 v quay l i b c 3à ạ ướ B c 11. a ra k t qu ướ Đư ế ảdem r i k t thúc.ồ ế 5.0 - M i b i toán có nhi u thu t toán khác nhau gi i, Tùy v o b i l m c a h cỗ à ề ậ để ả à à à ủ ọ sinh v thang i m trên cho i m phù h pà để để để ợ - B i 3: Có thu t toán s p x p tr c khi ánh d u v i ph c t p thu t toán nhà ậ ắ ế ướ đ ấ ớ độ ứ ạ ậ ỏ h n, n u h c sinh th hi n c thu t toán n y có th khuy n khích h nơ ế ọ ể ệ đượ ậ à ể ế ơ - 4 . TẠO HÀ TĨNH (Đề thi có 2 trang) KỲ THI CHỌN HỌC SINH GIỎI TỈNH CẤP THPT NĂM HỌC 2012 - 2013 MÔN THI: TIN HỌC - LỚP 10 Thời gian: 180 phút (Không kể thời gian giao đề) Hãy trình bày thuật toán. C PỲ Ọ Ọ Ỏ Ỉ Ấ THPT N M H C 2012 - 2013 Ọ H NG D N CH M THI Ớ Ẫ Ấ Môn thi: Tin h c 10 G i ý áp án đ Thang i mđể Câu 1 6.0 - Xác nh b i toán:đị à Input: Hai s a, bố (10 a b 10 ≤ ≤ 4 ) Output:. i m phù h pà để để để ợ - B i 3: Có thu t toán s p x p tr c khi ánh d u v i ph c t p thu t toán nhà ậ ắ ế ướ đ ấ ớ độ ứ ạ ậ ỏ h n, n u h c sinh th hi n c thu t toán n y có th khuy n khích h nơ