Download đề và đáp án thi học sinh giỏi lớp 12 môn tin học 2009 2010 tỉnh quảng bình (vòng 1)

5 219 1
Download đề và đáp án thi học sinh giỏi lớp 12 môn tin học 2009 2010 tỉnh quảng bình (vòng 1)

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

Thông tin tài liệu

Së Gi¸o dôc-§µo t¹o Qu¶ng b×nh SBD : §Ò chÝnh thøc kú thi CHäN häc sinh giái líp 12 n¨m häc 2009 - 2010 m«n: tin häc - vßng i Thời gian 180 phút, không kể thời gian giao đề ĐỀ RA Sử dụng ngôn ngữ lập trình Turbo Pascal để lập trình giải các bài toán sau: Câu 1: (3,0 điểm) Tìm số TIMSO.PAS Gọi abc là số có ba chữ số, hãy liệt kê tất cả các số abc sao cho tổng lập phương các chữ số của abc bằng chính nó. abc = a 3 + b3 + c3 Ví dụ: Ta có số: 153 = 13 + 53 + 33 Dữ liệu ra: Ghi ra file văn bản TIMSO.OUT, theo cấu trúc như sau: - Trên mỗi dòng ghi một số abc tìm được. Câu 2: (3,5 điểm) Tính diện tích đa giác DAGIAC.PAS Trong mặt phẳng tọa độ, cho đa giác lồi có N đỉnh, các đỉnh được đánh số theo thứ tự từ 1 đến N, đỉnh thứ i có tọa độ tương ứng là (xi, yi). Yêu cầu: Hãy tính diện tích của đa giác lồi trên. Dữ liệu vào: Cho trong file văn bản DAGIAC.INP, có cấu trúc như sau: - Dòng 1: Ghi số nguyên dương N, là số lượng đỉnh của đa giác lồi, (3 ≤ N ≤ 100). - N dòng tiếp theo: Mỗi dòng ghi hai số nguyên xi yi là tọa độ đỉnh thứ i của đa giác lồi, hai số được ghi cách nhau ít nhất một dấu cách, (-32767 ≤ xi , yi ≤ 32767). Dữ liệu ra: Ghi ra file văn bản DAGIAC.OUT, theo cấu trúc như sau: - Dòng 1: Ghi số thực S, là diện tích của đa giác. S được làm tròn đến 1 chữ số phần thập phân. Ví dụ: DAGIAC.INP DAGIAC.OUT 3 0.5 0 0 0 1 1 0 Câu 3: (3,5 điểm) Lắp đặt hệ thống ống dẫn xăng LAPDAT.PAS Một công ty kinh doanh xăng có N cửa hàng, các cửa hàng được đánh số theo thứ tự từ 1 đến N. Nhằm thuận tiện trong việc vận chuyển xăng giữa các cửa hàng, lãnh đạo công ty lập kế hoạch lắp đặt các đường ống dẫn nối các cửa hàng với nhau. Qua khảo sát, các chuyên gia cho biết độ dài đường ống giữa hai cửa hàng i và j là Aij. Để giảm chi phí, công ty chỉ lắp đặt các đường ống sao cho giữa hai cửa hàng bất kỳ đều có thể chuyển xăng qua lại cho nhau (trực tiếp hoặc gián 1 tiếp qua các cửa hàng trung gian) mà tổng độ dài các ống dẫn cần dùng là ngắn nhất. Yêu cầu: Hãy tìm một phương án lắp đặt các đường ống thỏa mãn yêu cầu của lãnh đạo công ty. Dữ liệu vào: Cho trong file văn bản LAPDAT.INP, có cấu trúc như sau: - Dòng 1: Ghi số nguyên dương N, là số lượng cửa hàng, (2 ≤ N ≤ 100). - N dòng tiếp theo: Mỗi dòng ghi N số nguyên dương A ij là độ dài đường ống cần dùng để nối giữa cửa hàng i và cửa hàng j. Trên mỗi dòng các số được ghi cách nhau ít nhất một dấu cách, (Aij = 0, với i = j; 1 ≤ Aij ≤ 32767, với i ≠ j). Dữ liệu ra: Ghi ra tệp văn bản LAPDAT.OUT, theo cấu trúc như sau: - Dòng 1: Ghi số nguyên dương L, là tổng độ dài đường ống cần dùng theo phương án tìm được (0 < L < 2×109). - Các dòng tiếp theo: Mỗi dòng ghi hai số nguyên dương i j thể hiện có đường ống nối giữa cửa hàng i và cửa hàng j. Hai số ghi cách nhau ít nhất một dấu cách. Ví dụ: LAPDAT.INP 4 0 2 3 12 2 0 4 5 3 4 0 9 12 5 9 0 LAPDAT.OUT 10 1 2 1 3 2 4 ==HẾT== 2 HƯỚNG DẪN CHẤM THI CHỌN HỌC SINH GIỎI LỚP 12 NĂM HỌC 2009 - 2010 MÔN TIN HỌC - VÒNG I I- Phương pháp: - Giám khảo tạo bộ dữ liệu vào, tính toán kết quả. Thực hiện chương trình của học sinh và so sánh kết quả. - Giám khảo có thể sử dụng chương trình gợi ý dưới đây để tính toán kết quả của dữ liệu vào. - Chương trình học sinh đúng một bộ test, giám khảo cho 0,5 điểm. Như vậy, nếu một câu có 3 điểm thì giám khảo phải tạo 6 bộ test. - Với mỗi câu, giám khảo phải tạo được một bộ test có không gian dữ liệu lớn. - Đối với Câu 1, kết quả có 4 số thỏa mãn điều kiện đề bài, học sinh trả lời đúng 1 số giám khảo cho 0,75 điểm. - Đối với Câu 2 nếu học sinh không làm tròn đến 1 chữ số thập phân thì trừ 0,1 điểm trên mỗi test. - Đối với Câu 3 có thể có nhiều phương án lắp đặt. Nếu học sinh đưa ra phương án khác với đáp án nhưng vẫn đúng thì giám khảo cho điểm tối đa. II- Chương trình gợi ý: Câu 1: (3,0 điểm) Tìm số Program Tim_so; Const fo='Timso.out'; Var a,b,c:Longint; f:Text; Begin Assign(f,fo); Rewrite(f); For a:=1 to 9 do For b:=0 to 9 do For c:=0 to 9 do If (a*a*a + b*b*b + c*c*c) = (100*a + 10*b + c) then Writeln(f,100*a + 10*b + c); Close(f); End. Câu 2: (3,5 điểm) Tính diện tích đa giác Program Dien_tich_Da_giac; Const fi='Dagiac.in5'; fo='Dagiac.out'; Type Diem = Record x,y:Longint; End; mmc=Array[0..1001] of Diem; Var N:Longint; A:mmc; Procedure Read_Data; Var i: Longint; f:Text; Begin Assign(f,fi); Reset(f); Readln(f,N); For i:=1 to N do Readln(f,A[i].x,A[i].y); Close(f); End; Procedure Tinh; Var i: Longint; Begin S:=0; S:Real; 3 A[N+1] := A[1]; For i:= 1 to N do S:= S + (1/2)*(A[i+1].y + A[i].y)*(A[i+1].x-A[i].x); End; Procedure Write_Data; Var f:Text; Begin Assign(f,fo); ReWrite(f); Write(f,abs(S):15:1); Close(f); End; BEGIN Read_Data; Tinh; Write_Data; END. Câu 3: (3,5 điểm) Lắp đặt hệ thống ống dẫn xăng Program Lap_Dat; Const fi='Lapdat.in0'; fo='Lapdat.ou0'; Type mhc=array[0..101,0..101] of Word; Canh = Record u:Byte; v:Byte; info:word; End; mmc=Array[1..10001] of Canh; Var T,K:Longint; N:Byte; E:mmc; B:mhc; Procedure Read_Data; Var f:text; i,j,l:Byte; Begin Assign(f,fi); Reset(f); Readln(f,N); Fillchar(B,sizeof(B),0); K:=0; For i:=1 to N do Begin For j:=1 to i-1 do Begin inc(K); Read(f,E[K].info); E[K].u:=i; E[K].v:=j; End; Readln(f); End; Close(f); End; Procedure Hoan_doi(Var x,y:Canh); Var tg:Canh; Begin tg:=x; x:=y; y:=tg; End; Procedure Sap_Xep; Var i,j:Longint; Begin For i:=1 to K-1 do For j:=i+1 to K do If E[i].info > E[j].info then Hoan_doi(E[i],E[j]); End; Function Lien_Thong(u,v:Byte):Boolean; var S:array[1..1000]of Word; 4 KT:array[1..100] of Boolean; Top,i:Byte; begin Top:=0; Fillchar(KT,sizeof(KT),false); Lien_Thong:=True; inc(Top); S[Top]:=u; KT[u]:=True; While Top > 0 do Begin u:=S[Top]; dec(Top); If u=v then Begin Lien_Thong:=False; Exit; End; For i:=1 to N do If (KT[i]=False) and (B[u,i] > 0) then Begin inc(Top); S[Top]:=i; KT[i]:=True; End; End; End; Procedure Kruskal; Var i,j:Word; Begin i:=0; j:=0; T:=0; While i < N-1 do Begin inc(j); If Lien_Thong(E[j].u,E[j].v) then Begin B[E[j].u,E[j].v]:=E[j].info; B[E[j].v,E[j].u]:=E[j].info; T:=T+E[j].info; inc(i); end; End; End; Procedure Write_Data; Var f:text; i,j:Byte; Begin Assign(f,fo); Rewrite(f); Writeln(f,t); For i:=1 to N do For j:=1 to N do If B[i,j]>0 then Begin Writeln(f,i,' ',j); B[j,i]:=0; End; Close(f); End; BEGIN Read_Data; Sap_Xep; Kruskal; Write_Data; END. 5 ... ==HẾT== HƯỚNG DẪN CHẤM THI CHỌN HỌC SINH GIỎI LỚP 12 NĂM HỌC 2009 - 2010 MÔN TIN HỌC - VÒNG I I- Phương pháp: - Giám khảo tạo liệu vào, tính toán kết Thực chương trình học sinh so sánh kết - Giám khảo... điều kiện đề bài, học sinh trả lời số giám khảo cho 0,75 điểm - Đối với Câu học sinh không làm tròn đến chữ số thập phân trừ 0,1 điểm test - Đối với Câu có nhiều phương án lắp đặt Nếu học sinh đưa... chương trình học sinh so sánh kết - Giám khảo sử dụng chương trình gợi ý để tính toán kết liệu vào - Chương trình học sinh test, giám khảo cho 0,5 điểm Như vậy, câu có điểm giám khảo phải tạo test

Ngày đăng: 11/10/2015, 13:34

Từ khóa liên quan

Mục lục

  • ==HẾT==

  • HƯỚNG DẪN CHẤM THI CHỌN HỌC SINH GIỎI LỚP 12

    • I- Phương pháp:

    • II- Chương trình gợi ý:

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

Tài liệu liên quan