* Lưu ý: Học sinh có nhiều cách giải khác nhau, nếu đúng giám kháo cho điểm tương ứng của phần đó..[r]
(1)PHÒNG GD&ĐT HẠ HÒA Đề chính thức KÌ THI HỌC SINH GIỎI LỚP Năm học: 2015 – 2016 Môn: TIN HỌC Ngày thi: tháng 12 năm 2015 Thời gian: 150 phút (không kể thời gian giao đề) (Đề thi có trang) * Các file chương trình và file liệu đặt tên chính xác sau: Bài File bài làm Dữ liệu vào Dữ liệu Bài 1: Bai1.Pas BAI1.INP BAI1.OUT Bài 2: Bai2.Pas BAI2.INP BAI2.OUT Bài 3: Bai3.Pas BAI3.INP BAI3.OUT Bài 4: Bai4.Pas BAI4.INP BAI4.OUT Time 2s 2s 2s 2s Thí sinh tạo thư mục và lưu các bài làm theo đường dẫn D:\Thi HSG<SBD> Bài (4,0 điểm) Khởi động chương trình PASCAL, viết chương trình đọc vào số tự nhiên n từ tệp “BAI1.INP” cho < n ≤1000000, tính tổng s n: và in lên tệp “BAI1.OUT”, liệu nhập sai in số 1.2 2.3 3.4 n.(n 1) Sn 3.4 4.5 5.6 ( n 2)(n 3) Bài 2.(4,0 điểm) Viết chương trình kiểm tra số tự nhiên n (n<10000) nhập vào từ tệp “BAI2.INP” Kiểm tra xem có phải là số hoàn chỉnh hay không? In lên tệp “BAI2.OUT” số n là số hoàn chỉnh và số n không phải là số hoàn chỉnh Biết số hoàn chỉnh là số có tổng các ước nhỏ nó chính nó Ví dụ: Số có các ước nhỏ nó là 1, 2, Tổng các ước + + = Vậy gọi là số hoàn chỉnh Bài (7,0 điểm) Viết chương trình nhập từ tệp “BAI3.INT” hai số nguyên dương a, b cách dấu cách và thực in lên tệp đầu “BAI3.OUT”: a) Dòng in số đối xứng số nguyên dương a và đối xứng số nguyên dương b Cách dấu “ ;” b) Dòng in tổng số đối xứng với a và số đối xứng với b Biết ta gọi số “đối xứng” với số a là số nguyên dương thu từ a cách đảo ngược thứ tự các chữ số a Ví dụ: nhập số a = 12, số b = 23 cho kết quả: a) Số đối xứng với số a = 12 là 21; Số đối xứng với số b = 23 là 32 b) Tổng số đối xứng với a = 12 và số đối xứng với b = 23 là: 21 + 32 = 53 Bài 4.(5,0 điểm) (2) Cho chuỗi gồm n2 ký tự từ tệp “BAI4.INP” Người ta cắt chuỗi từ trái sang phải thành n chuỗi con, chuỗi có đúng n ký tự Viết chuỗi thành cột, ta có bảng gồm n hàng và n cột ký tự Yêu cầu: Viết chương trình nhập vào chuỗi gồm n2 ký tự (4 n2 255) In lên tệp “BAI4.OUT” a) In các hàng có tổng mã ASCII các ký tự là lớn hàng trên dòng b) Dòng in giá trị tổng câu a Ví dụ: BAI4.INP abcdefghi Bảng adg beh cf i BAI4.OUT cf i 306 -Hết -Họ và tên thí sinh: SBD Cán bộ coi thi không phải giải thích gì thêm (3) HƯỚNG DẪN CHẤM THI - CHỌN HỌC SINH GIỎI LỚP CẤP HUYỆN NĂM HỌC 2015 – 2016 Môn: Tin học Chấm theo Test thử, đúng test nào giám khảo cho điểm test đó Bài (4,0 điểm) Bộ Test thử Test BAI1.INP BAI1.OUT 1000 1000000 Bài (4,0 điểm) Test BAI2.INP 2 496 8128 Bài (7,0 điểm) Test 1.879 978.044 1018115.610 BAI2.OUT 1 BAI3.INP 12 123 1357 2809 Bài (5,0 điểm) Điểm 1,0 đ 1,0 đ 1,0 đ 1,0 đ 23 456 2468 2014 Số đối xứng số a 21 321 7531 9082 BAI3.OUT Số đối Tổng hai xứng số b số đối xứng a,b 32 53 654 975 8642 16173 4102 13184 Test BAI4.INP abcdefghi HOCSINHGIOILOPCHINCAPTINH ABCDEFGHIJKLJAAA asdfghjklzxcvb q m BAI4.OUT cf i 306 OHLIT 384 AE I J DHLA 281 shzb djxq 439 Điểm 1,5 đ 1,5 đ 2,0 đ 2,0 đ Điểm 0,5 0,5 0,5 0,5 0,5 0,5 0,5 0.5 0,5 0,5 (4) Hướng dẫn chấm trên giấy Bài Chương trình Uses Crt; Var n,i:Integer; s:Real; BEGIN ClrScr; Write(‘Nhap so tu nhien n=');Readln(n); While ((n<=5) OR (n>100) (4,0đ) Begin Write(‘Nhap lai n thoa man < n <=100, n = ');Readln(n); end; s:=0; For i:=1 to n s:=s+i*(i+1)/((i+2)*(i+3)); Write(‘s=’,s:4:3); Readln END s:= 0; For i:= to n - If n mod i = then s:= s + i; (4,0đ) If s = n then writeln(n, ‘ : la so hoan chinh ’) Else writeln(n, ‘ : khong la so hoan chinh ’) Readln END Program Bai3; Uses crt; Var a, b: Longint; (7,0đ) Function DX(a: integer):integer; Var so: Integer; Begin so:= 0; Repeat so:= so*10+a mod 10; a:= a div 10; Until a = 0; DX:= so; end; BEGIN Điểm Điểm 0,5 1,5 0,5 0,5 1,5 đ 1,0 đ 1,0 đ 2,0 đ 1,0 đ (5) Clrscr; Write(' Nhap so a= '); readln(a); Write(' Nhap so b= '); readln(b); Writeln('So doi xung so ',a,' la: ',DX(a)); Writeln('So doi xung so ',b,' la: ',DX(b)); Writeln('Tong cua hai so doi xung la: ',DX(a)+DX(b)); readln; END Program Bai4; Uses crt; Var a:Array[1 1000] of Integer; i, n: Byte; j, k: Integer; kt:boolean; BEGIN clrscr; Write(' Nhap kich thuoc N cua mang: '); Readln(n); a[1]:= 2; For i:= to n Begin j:= a[i-1]; (5,0đ) Repeat Inc(j); kt:= True; For k:= to j div If j mod k = then kt:= False; Until kt; a[i]:= j; End; Writeln(' Mang N so nguyen to dau tien: '); For i:=1 to n Write(a[i]:4); Readln; END 2,0 đ 1,0 đ 2,0 đ 2,0 đ 1,0 đ * Lưu ý: Học sinh có nhiều cách giải khác nhau, đúng giám kháo cho điểm tương ứng phần đó (6)