Đề thi chọn học sinh giỏi môn Tin học lớp 12 lần 2 năm học 2012-2013 – Sở Giáo dục và Đào tạo Ninh Bình (Đề chính thức)

4 46 0
Đề thi chọn học sinh giỏi môn Tin học lớp 12 lần 2 năm học 2012-2013 – Sở Giáo dục và Đào tạo Ninh Bình (Đề chính thức)

Đang tải... (xem toàn văn)

Thông tin tài liệu

Đề thi chọn học sinh giỏi môn Tin học lớp 12 lần 2 năm học 2012-2013 – Sở Giáo dục và Đào tạo Ninh Bình (Đề chính thức) là tư liệu tham khảo hữu ích hỗ trợ cho quá trình học tập và ôn thi của các em học sinh. Bên cạnh đó giúp giáo viên đánh giá năng lực học sinh toàn diện hơn.

SỞ GD&ĐT NINH BÌNH ĐỀ THI CHÍNH THỨC ĐỀ 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: A1A2A3 AN, biết các đỉnh Ai (1   i   N) có tọa độ (xi; yi) Dữ liệu: File văn bản BAI1.INP: Dịng 1: Một số ngun dương N (3   N   100) Dịng 2: Chứa 2N số ngun: x1, y1, x2, y2, , xN, yN theo thứ tự đó, (|xi|, |yi|    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 1.000 0 1 1 Câu 2 (7 điểm): Lược đồ số hữu tỉ (file bài làm: bai2.pas)  Cantor là nhà tố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… u cầu: Với số ngun dương N, hãy tìm phân số thứ N trong lược   đồ số hữu tỉ nói trên 1/1 2/1 3/1 4/1 5/1 1/2 1/3 1/4 1/5 2/2 2/3 2/4 3/2 3/3 4/2 Dữ liệu: File văn bản BAI2.INP chứa số nguyên dương N (N   107) 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   Ví dụ: BAI2.INP BAI2.OUT BAI2.INP BAI2.OUT 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.  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ố ngun N và K (2 ≤ N ≤ 104, 2 ≤ K ≤ 100).  Các dịng tiếp theo là dãy N số ngun, mỗi số có giá trị tuyệt đối khơng q 104.    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 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  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 := to n Read(F, x[i], y[i]); Close(F); x[0] := x[n]; y[0] := y[n]; for i := to n 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, MAX_K-1] of Boolean; i, i1, i2, j, z: Integer; BEGIN Assign(F, iFn); Reset(F); ReadLn(F, n, k); for i := to n begin Read(F, a[i]); a[i] := (a[i] mod k + k) mod k; end; Close(F); t[0, a[1]] := true; for i := to n begin i1 := i and 1; i2 := - i2; FillChar(t[i2], k, 0); for j := k-1 downto 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 ­­­ ... 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 0 12? ?–? ?20 13 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... Họ? ?và? ?tên thí? ?sinh? ?: ………… Số báo  danh  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 ... true; for i := to n begin i1 := i and 1; i2 := - i2; FillChar(t[i2], k, 0); for j := k-1 downto 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;

Ngày đăng: 18/11/2020, 08:11

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan