SỞ GD&ĐT NINH BÌNH ĐỀ THI CHỌN HỌC SINH GIỎI LỚP 12 THPT Kỳ thi thứ hai - Năm học 2012 – 2013 MÔN: TIN HỌC Ngày thi: 18/12/2012 (Thời gian làm bài: 180 phút) Đề thi gồm 03 câu, trong 01 trang Câu 1 (7 điểm): Diện tích đa giác (file bài làm: bai1.pas) Tính diện tích đa giác lồi N đỉnh: A 1 A 2 A 3 A N , biết các đỉnh A i (1 ≤ i ≤ N) có tọa độ (x i ; y i ). Dữ liệu: File văn bản BAI1.INP: • Dòng 1: Một số nguyên dương N (3 ≤ N ≤ 100). • Dòng 2: Chứa 2N số nguyên: x 1 , y 1 , x 2 , y 2 , , x N , y N theo thứ tự đó, (|x i |, |y i | ≤ 100, 1 ≤ i ≤ N). Kết quả: File văn bản BAI1.OUT, ghi kết quả tìm được sau khi làm tròn đến 3 chữ số sau dấu phẩy. Ví dụ: BAI1.INP BAI1.OUT 4 0 0 0 1 1 1 1 0 1.000 Câu 2 (7 điểm): Lược đồ số hữu tỉ (file bài làm: bai2.pas) Cantor là nhà toán học nổi tiếng, một trong những chứng minh quan trọng của ông là việc chỉ ra rằng lực lượng tập số hữu tỉ đúng bằng lực lượng tập số tự nhiên. Cơ sở của chứng minh đó là lược đồ số hữu tỉ như hình bên. Trong lược đồ này, số đầu tiên là 1/1, số thứ 2 là 1/2, số thứ 3 là 2/1, số thứ 4 là 3/1, số thứ 5 là 2/2… Yêu cầu: Với số nguyên dương N, hãy tìm phân số thứ N trong lược đồ số hữu tỉ nói trên. Dữ liệu: File văn bản BAI2.INP chứa số nguyên dương N (N ≤ 10 7 ). Kết quả: File văn bản BAI2.OUT, ghi hai số nguyên dương là tử số và mẫu số của phân số tìm được. Ví dụ: BAI2.INP BAI2.OUT BAI2.INP BAI2.OUT 4 3 1 8 2 3 Câu 3 (6 điểm): Dãy chia hết (file bài làm: bai3.pas) Xét một dãy số nguyên gồm N phần tử. Viết dãy số đó theo thứ tự từ trái sang phải, sau đó đặt giữa mỗi cặp số cạnh nhau dấu cộng '+' hoặc trừ '-', khi đó ta thu được một biểu thức số học. Ta nói dãy số là chia hết cho K nếu tồn tại một cách đặt dấu để thu được biểu thức số học chia hết cho K. Yêu cầu: Hãy xác định dãy số đã cho có chia hết cho K hay không. Dữ liệu: File văn bản BAI3.INP: • Dòng đầu là hai số nguyên N và K (2 ≤ N ≤ 10 4 , 2 ≤ K ≤ 100). • Các dòng tiếp theo là dãy N số nguyên, mỗi số có giá trị tuyệt đối không quá 10 4 . Kết quả: File văn bản BAI3.OUT, ghi số 0 hoặc 1 tương ứng với dãy không chia hết hoặc chia hết cho K. Ví dụ: BAI3.INP BAI3.OUT BAI3.INP BAI3.OUT 4 7 1 2 3 5 1 4 6 1 2 3 5 0 Chú ý: - Mỗi bài có 60% số test kích thước dữ liệu nhỏ. - Trong file dữ liệu hoặc kết quả, trên 1 dòng, hai giá trị cạnh nhau cách nhau 1 dấu cách. Hết Họ và tên thí sinh : ………… Số báo danh ĐỀ THI CHÍNH THỨC 1/1 1/2 1/3 1/4 1/5 2/1 2/2 2/3 2/4 3/1 3/2 3/3 4/1 4/2 5/1 Họ và tên, chữ ký: Giám thị 1: Giám thị 2: HƯỚNG DẪN CHẤM THI CHỌN HỌC SINH GIỎI LỚP 12 THPT Kỳ thi thứ hai - Năm học 2012 – 2013 MÔN: TIN HỌC Chấm bằng chương trình tự động AMM2: Câu 1: 70 test, mỗi test đúng cho 0,1 điểm. Câu2: 70 test, mỗi test đúng cho 0,1 điểm. Câu3: 60 test, mỗi test đúng cho 0,1 điểm. Đáp án Bài 1: {$MODE ObjFPC} const iFn = 'bai1.inp'; oFn = 'bai1.out'; MAX_N = 100; var F: Text; n: Integer; x, y: array[0 MAX_N] of Integer; i: Integer; s: Real; BEGIN Assign(F, iFn); Reset(F); ReadLn(F, n); for i := 1 to n do Read(F, x[i], y[i]); Close(F); x[0] := x[n]; y[0] := y[n]; for i := 1 to n do s := s + (x[i-1]-x[i])*(y[i-1]+y[i]); s := abs(s)/2; Assign(F, oFn); Rewrite(F); Write(F, s:0:3); Close(F); END. Bài 2: {$MODE ObjFPC} const iFn = 'bai2.inp'; oFn = 'bai2.out'; var F: Text; n: Integer; d, a, b: Integer; BEGIN Assign(F, iFn); Reset(F); ReadLn(F, n); Close(F); d := Trunc( (-1 + sqrt(1 + 8*n))/2 ); if d*(d+1) < 2*n then Inc(d); a := n - (d-1)*d div 2; b := d+1 - a; Assign(F, oFn); Rewrite(F); if Odd(d) then Write(F, b, ' ', a) else Write(F, a, ' ', b); Close(F); END. Bài 3: {$MODE ObjFPC} const iFn = 'bai3.inp'; oFn = 'bai3.out'; MAX_N = 10000; MAX_K = 100; var F: Text; n, k: Integer; a: array[1 MAX_N] of Integer; t: array[0 1, 0 MAX_K-1] of Boolean; i, i1, i2, j, z: Integer; BEGIN Assign(F, iFn); Reset(F); ReadLn(F, n, k); for i := 1 to n do begin Read(F, a[i]); a[i] := (a[i] mod k + k) mod k; end; Close(F); t[0, a[1]] := true; for i := 2 to n do begin i1 := i and 1; i2 := 1 - i2; FillChar(t[i2], k, 0); for j := k-1 downto 0 do if t[i1, j] then begin t[i2, (j - a[i]+ k) mod k] := true; t[i2, (j + a[i]) mod k] := true; end; end; Assign(F, oFn); Rewrite(F); Write(F, Ord(t[i2, 0])); Close(F); END. HẾT . SỞ GD&ĐT NINH BÌNH ĐỀ THI CHỌN HỌC SINH GIỎI LỚP 12 THPT Kỳ thi thứ hai - Năm học 2 012 – 2013 MÔN: TIN HỌC Ngày thi: 18 /12/ 2 012 (Thời gian làm bài: 180 phút) Đề thi gồm 03 câu, trong. danh ĐỀ THI CHÍNH THỨC 1/1 1/2 1/3 1/4 1/5 2/1 2/2 2/3 2/4 3/1 3/2 3/3 4/1 4/2 5/1 Họ và tên, chữ ký: Giám thị 1: Giám thị 2: HƯỚNG DẪN CHẤM THI CHỌN HỌC SINH GIỎI LỚP 12 THPT Kỳ thi thứ. Giám thị 2: HƯỚNG DẪN CHẤM THI CHỌN HỌC SINH GIỎI LỚP 12 THPT Kỳ thi thứ hai - Năm học 2 012 – 2013 MÔN: TIN HỌC Chấm bằng chương trình tự động AMM2: Câu 1: 70 test, mỗi test đúng cho 0,1 điểm. Câu2: