De & dap an thi HSG tin 9 Ninh Binh 2008

5 1.2K 17
De & dap an thi HSG tin 9 Ninh Binh 2008

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

Thông tin tài liệu

Sở giáo dục và đào tạo Đề thi chọn học sinh giỏi lớp 9 THCS Tỉnh ninh bình năm học 2007 - 2008 Môn: Tin học Thời gian làm bài: 150 phút (không kể thời gian giao đề) (Đề thi gồm 02 trang) Em hóy lp trỡnh bng ngụn ng Pascal gii cỏc bi toỏn sau: Bi I (10 im): DIN TCH CC HèNH. Cho hỡnh ch nht ABCD cú chiu di AB l a (cm), chiu rng AD l b (cm) vi a, b l cỏc s nguyờn dng khụng vt quỏ 10000. Mt im M trờn on BC, mt im N trờn on CD sao cho di (tớnh bng cm) cỏc on BM, CN bng nhau v l s nguyờn khụng õm. Yờu cu: 1. Bit di BM, tớnh din tớch hỡnh ch nht ABCD v din tớch tam giỏc MCN. 2.Tỡm giỏ tr ln nht v giỏ tr nh nht ca din tớch tam giỏc AMN khi M, N thay i. D liu vo: D liu ca bi toỏn cho trong tp tin DIENTICH.INP gm ba s a, b, x (x b a, x l di BM trong yờu cu 1) c ghi trờn cựng mt dũng theo ỳng th t trờn, hai s liờn tip cỏch nhau mt khong trng. D liu ra: Kt qu ghi ra mn hỡnh (hoc ghi ra file DIENTICH.OUT) trờn 5 dũng: - Dũng u l ba s a, b v x. - Dũng th hai l din tớch hỡnh ch nht ABCD. - Dũng th ba l din tớch tam giỏc MCN - Dũng th t l giỏ tr ln nht ca din tớch tam giỏc AMN - Dũng th nm l giỏ tr nh nht ca din tớch tam giỏc AMN (Cỏc giỏ tr din tớch c ghi trong dng thp phõn vi 1 ch s sau du phy). Vớ d: DIENTICH.INP Kt qu trờn mn hỡnh (hoc file DIENTICH.OUT) 10 6 2 10 6 2 60.0 4.0 30.0 17.5 Hn ch k thut: - Ghi tờn file bi lm l DIENTICH.PAS. - D liu vo l chớnh xỏc khụng cn kim tra. - Nu khụng nhp c d liu vo t file, thớ sinh cú th nhp d liu vo t bn phớm - Cú khong 60% s b test cú a < 100. đề thi chính thức A B D C M N Bài II(10 điểm): DÃY SỐ. Cho số nguyên dương S và dãy số gồm N số nguyên dương F 1 , F 2 , ., F N . Dãy số đã cho được gọi là dãy tăng dần nếu: F i ≤ F i+1 ∀ i { } 1, .,2,1 −∈ n ( hay F 1 ≤ F 2 ≤ F 3 ≤ . ≤ F N ). Chúng ta gọi hai số hạng F i1 và F i2 trong dãy đã cho (với i1 ≠ i2; i1,i2 { } n, .,2,1 ∈ ): - Là một “cặp đôi xung khắc” nếu F i1 + F i2 = S. - Là một “cặp đôi lý tưởng” nếu chúng cùng có ba chữ số, các chữ số của số hạng này giống hệt của số hạng kia nhưng khác về thứ tự xuất hiện - ví dụ 123 và 132 hay 121 và 211 là các cặp đôi lý tưởng còn 121 và 122 hay 457 và 457 thì không phải. Yêu cầu: Cho biết S và dãy số F 1 , F 2 , ., F N . Hãy xác định xem dãy đã cho có phải dãy tăng dần hay không, tính số cặp đôi xung khắc và tìm một cặp đôi lý tưởng (nếu có) trong dãy đã cho. Dữ liệu vào: Dữ liệu vào của bài toán được cho trong tệp tin DAYSO.INP với cấu trúc như sau: - Dòng đầu tiên gồm hai số N và S (N ≤ 50000, S <1000). - Dòng thứ i trong N dòng tiếp theo chứa một số là số F i của dãy (F i < 500). Dữ liệu ra: Kết quả ghi ra trên màn hình (hoặc ghi ra file DAYSO.OUT)bốn dòng: - Dòng đầu ghi ba số N, S và F N . - Dòng thứ hai ghi CO nếu dãy đã cho là dãy tăng dần, ghi KHONG nếu ngược lại. - Dòng thứ ba ghi một số là số cặp đôi xung khắc trong dãy đã cho. - Dòng thứ tư ghi hai số là một cặp đôi lý tưởng tìm được trong dãy đã cho, nếu không có cặp đôi lý tưởng nào thì ghi hai số 0. Ví dụ: DAYSO.INP Kết quả trên màn hình (hoặc file DAYSO.OUT) 5 5 1 2 3 4 5 5 5 5 CO 2 0 0 10 111 110 110 1 1 5 5 10 10 10 101 10 111 101 KHONG 7 110 101 Hạn chế kỹ thuật: - Ghi tên file bài làm là DAYSO.PAS - Dữ liệu vào là chính xác không cần kiểm tra. - Có khoảng 30% số bộ test có thể nhập dữ liệu vào từ bàn phím. - Có khoảng 60% số bộ test có N < 1000. ------------- HÕt------------- Hä vµ tªn thÝ sinh : Sè b¸o danh . Chữ kí giám thị 1 Chữ kí giám thị 2 Sở giáo dục và đào tạo Hớng dẫn chấm thi Chọn hsg lớp 9 THCS Tỉnh ninh bình năm học 2007 - 2008 Môn: Tin học I- Dữ liệu chấm bài. Giám khảo copy 14 file dữ liệu vào gồm: - 7 file test bài 1 lần lợt là DIENTICH.IN1, DIENTICH.IN2, , DIENTICH.IN7, - 7 file test bài 2 lần lợt là DAYSO.IN1, DAYSO.IN2, , DAYSO.IN7 vào th mục chứa Turbo Pascal trên máy chấm bài. II Chấm bài. Với mỗi bài thi của 1 thí sinh: Chấm bài 1: 1. Giám khảo Copy bài làm có tên DIENTICH.PAS vào th mục chứa Turbo Pascal trên máy chấm bài. 2. Với mỗi file dữ liệu vào - nếu học sinh không nhập dữ liệu từ file thì giám khảo nhập từ bàn phím - chạy chơng trình của học sinh rồi quan sát kết quả trên màn hình (hoặc trên file dữ liệu ra) so sánh với đáp án và cho điểm chi tiết nh sau: + Ba test đầu, mỗi test 2 điểm: - Ghi ra đúng a, b, x cho 0,25 điểm - Ghi ra đúng diện tích hình chữ nhật ABCD cho 0,25 điểm - Ghi ra đúng diện tích tam giác MCN cho 0,50 điểm - Ghi ra đúng diện tích nhỏ nhất cho 0,50 điểm - Ghi ra đúng diện tích lớn nhất cho 0,50 điểm + Bốn test sau, mỗi test 1 điểm: (Không cho điểm ghi đúng a, b, x nữa) - Ghi ra đúng diện tích hình chữ nhật ABCD cho 0,25 điểm - Ghi ra đúng diện tích tam giác MCN cho 0,25 điểm - Ghi ra đúng diện tích nhỏ nhất cho 0,25 điểm - Ghi ra đúng diện tích lớn nhất cho 0,25 điểm Chấm bài 2: 1. Giám khảo Copy bài làm có tên DAYSO.PAS vào th mục chứa Turbo Pascal trên máy chấm bài. 2. Với mỗi file dữ liệu vào - nếu học sinh không nhập dữ liệu từ file thì giám khảo nhập từ bàn phím 2 test đầu tiên - chạy chơng trình của học sinh rồi quan sát kết quả trên màn hình so sánh với đáp án và cho điểm chi tiết nh sau: + Ba test đầu, mỗi test 2 điểm: - Ghi ra đúng N, S, F N cho 0,25 điểm - Ghi ra đúng dãy tăng dần hay không cho 0,75 điểm - Ghi ra đúng số cặp xung khắc cho 0,75 điểm - Ghi ra đúng cặp đôi lý t ởng cho 0,25 điểm + Bốn test sau, mỗi test 1 điểm: (Không cho điểm ghi ra đúng N, S, F N nữa). - Ghi ra đúng dãy tăng dần hay không cho 0, 25 điểm - Ghi ra đúng số cặp xung khắc cho 0,50 điểm - Ghi ra đúng cặp đôi lý t ởng cho 0,25 điểm {B i 1 - DIENTICH.PAS}à var a,b,x:integer; min, max,s,s1,s2:real; f: text; begin Assign(f,'dt.inp'); reset(f); readln(f,a,b,x); close(f); writeln(a,’ ‘,b,’ ‘,x); s1:=a*b; s2:=x*(b-x)/2; min:=s1/2; max:=s1/2; for x:=1 to b do begin s:=s1 - (a*x + x*(b-x) + b*(a-x))/2; if min>s then min:=s; if max<s then max:=s; end; writeln(s1:12:1);writeln(s2:12:1); writeln(max:12:1);writeln(min:12:1); readln; end. {B i 2 - DAYSO.PAS}à uses crt; const fi = 'dayso.inp'; max = 500; var a:array[1 500] of word; so:array[1 4,0 9,0 9] of boolean; f:text; tangdan:boolean; n,s,fn,socu:word; Tongxk:longint; procedure nhap; var i,k:word; begin fillchar(a,sizeof(a),0); assign(f,fi); reset(f); socu:=0; tangdan:=true; readln(f,n,s); for i:= 1 to n do begin readln(f,k); inc(a[k]); if k<socu then tangdan:=false; socu:=k; if k>100 then so[k div 100,(k div 10)mod 10,k mod 10]:=true; end; fn:=k; close(f); end; procedure demxungkhac; var i:word; begin tongxk:=0; for i:= 1 to ((s-1)div 2) do tongxk:=tongxk+a[i]*a[s-i]; if not odd(s) then begin i:=s div 2; tongxk:=tongxk+(a[i]*(a[i]-1) div 2); end; end; procedure timlytuong; var i,j,k:byte; begin for i:=1 to 4 do for j:=0 to 9 do for k:=0 to 0 do if so[i,j,k] then begin if (j<>k)and so[i,k,j] then begin write(i,j,k,' ',i,k,j); exit; end; if (k<>0)and(i<>k)and so[k,j,i] then begin write(i,j,k,' ',k,j,i); exit; end; if (j<>0)and(i<>j)and so[j,i,k] then begin write(i,j,k,' ',j,i,k); exit; end; if (k<>0)and((i<>j)or(i<>k)or(k<>j))and so[k,i,j] then begin write(i,j,k,' ',k,i,j); exit; end; if (j<>0)and((i<>j)or(i<>k)or(k<>j))and so[j,k,i] then begin write(i,j,k,' ',k,j,i); exit; end; end; writeln(0,' ',0); end; procedure inkq; begin clrscr; writeln(n,' ',s,' ',fn); if tangdan then writeln('CO') else writeln('KHONG'); demxungkhac; writeln(tongxk); timlytuong; end; begin nhap; inkq; readln; end. . (j<>0)and((i<>j)or(i<>k)or(k<>j))and so[j,k,i] then begin write(i,j,k,' ',k,j,i); exit; end; end; writeln(0,' ',0);. write(i,j,k,' ',j,i,k); exit; end; if (k<>0)and((i<>j)or(i<>k)or(k<>j))and so[k,i,j] then begin write(i,j,k,' ',k,i,j);

Ngày đăng: 25/08/2013, 07:10

Từ khóa liên quan

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

Tài liệu liên quan