Tải bản đầy đủ (.pdf) (8 trang)

DEHDCMON TINHSGTHPT20152016

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (480.73 KB, 8 trang )

<span class='text_page_counter'>(1)</span>SỞ GIÁO DỤC VÀ ĐÀO TẠO LÀO CAI. KÌ THI CHỌN HỌC SINH GIỎI CẤP TỈNH THPT NĂM HỌC 2015 - 2016 MÔN THI: TIN HỌC Ngày thi: 12 tháng 10 năm 2015. ĐỀ THI CHÍNH THỨC. (Thời gian làm bài 180 phút không kể thời gian giao đề) Đề thi gồm 03 trang. TỔNG QUAN BÀI THI Tên bài Câu 1: Dãy số Câu 2: EGG Câu 3: Phần thưởng. Tệp chương trình. Primemax.* Egg.* J_bonus.*. Tệp dữ liệu vào. Tệp dữ liệu ra. PRIMEMAX.INP PRIMEMAX.OUT EGG.INP EGG.OUT J_BONUS.INP J_BONUS.OUT. Điểm. Time. 6 7 7. 1s 1s 1s. Phần mở rộng của tệp chương trình được đặt tùy theo ngôn ngữ lập trình được sử dụng (ngôn ngữ Pascal tương ứng *.pas, ngôn ngữ C là *.cpp). Câu 1: Dãy số. Cho dãy số nguyên a1, a2, …, an . với ai  109 , n  105 1. Tìm số nguyên tố lớn nhất của dãy 2. Số nào xuất hiện nhiều nhất trong dãy. Dữ liệu:. Đầu vào cho bởi tệp: prime.inp - Dòng đầu tiên là số n - Dòng thứ hai là n số nguyên mỗi số cách nhau bởi một dấu cách.. Đầu ra cho bởi tệp: prime.out - Dòng thứ nhất là số nguyên tố lớn nhất của dãy, nếu không có số nguyên tố thì in ra 0. - Dòng thứ hai là số xuất hiện nhiều nhất trong dãy, nếu có nhiều số có số lần xuất hiện bằng nhau thì in ra số đầu tiên. Ví dụ:. PRIMEMAX.INP. 16 0 0 0 0 1 1 1 1 -1 -1 -1 -1 4 4 4 4 4 11873 5737 9269 7956. 0 0 5737 11873. PRIMEMAX.OUT. Trong đó: - Có 70% số test ứng với 70% số điểm của bài có n  103 - Có 30% số test ứng với 30% số điểm của bài có n  105 1.

<span class='text_page_counter'>(2)</span> Câu 2: Egg (7 điểm) Nhà hàng Pizza_Egg có một số nông dân chuyên cung cấp trứng sạch và mỗi người có một giá bán khác nhau. Mỗi người nông dân chỉ có một số lượng trứng nhất định mỗi ngày, nhà hàng có thể mua một số trứng từ mỗi người nông dân, ít hơn hoặc bằng số lượng trứng của mỗi người nông dân đó. Biết số lượng trứng mỗi ngày mà nhà hàng cần, giá mỗi quả trứng và số lượng trứng mà mỗi người nông dân có. Hãy tính số tiền ít nhất mà nhà hàng cần để mua được số trứng đó. Giả thiết tổng số trứng của người nông dân đủ đáp ứng nhu cầu của nhà hàng. Dữ liệu: INPUT: EGG.INP Dòng đầu tiên chứa hai số nguyên N,M. N là số trứng mà nhà hàng cần mỗi ngày ( 0  N  100000 ), M là số người nông dân cung cấp trứng cho nhà hàng ( 0  M  5000 ). Dòng thứ i trong M dòng tiếp theo, chứa hai số nguyên Ai và Bi cách nhau một dấu cách. Ai ( 0  Ai  5000 ) là giá một quả trứng của người nông dân i; Bi ( 0  Bi  50000 ) là số trứng tối đa mà một người nông dân có thể bán cho nhà hàng.. OUTPUT: EGG.OUT Ghi trên một dòng duy nhất một số nguyên là số tiền nhỏ nhất mà nhà hàng có thể mua trứng mỗi ngày. Ví dụ: EGG.INP EGG.OUT 50 5 5 30 10 40 3 10 8 80 7 30. 250. Trong đó: - Có 70% số test ứng với 70% số điểm của bài có 0  N  1000 - Có 30% số test ứng với 30% số điểm của bài có 0  N  100000. Câu 3: Phần thưởng Để giúp học sinh thư giãn sau những giờ thi căng thẳng, Ban tổ chức đã đưa ra trò chơi đi trên lưới ô vuông. Phần thưởng được trao cho người có điểm cao nhất.. Cách chơi như sau: Sân chơi là một hình chữ nhật đơn vị có kích thước mxn. Học sinh chọn một ô ở cột 1 và bước vào ô đó. Sau đó bước vào ô ở cột liền kề bên phải theo hướng chéo lên một ô hoặc sang phải một ô hoặc chéo dưới một ô. Tức là, nếu học sinh ở ô có tọa độ (i,j) thì có thể bước sang các ô có tọa độ (i-1,j+1) hoặc (i,j+1) hoặc (i+1,j+1). 2.

<span class='text_page_counter'>(3)</span> Biết cách tính điểm khi bước vào ô có tọa độ (i,j) như sau: Nếu a[i,j] là số không âm thì tổng điểm của học sinh tăng lên a[i,j], ngược lại nếu a[i,j] là số âm thì tổng điểm của học sinh giảm đi |a[i,j]| lần. Khi học sinh sẽ bước đến một ô ở cột N thì sau khi tính điểm xong sẽ dừng lại, hoàn thành lượt chơi. Ví dụ, với hình bên ta có nhiều cách đi từ cột 1 đến cột 5 - Đi từ vào ô (1,1)-->(2,2)-->(1,3)-->(1,4)-->(1,5) 43 6 thì tổng điểm bằng: 3  4.167 2. - Đi từ vào ô (1,1)-->(2,2)-->(3,3)-->(3,4)-->(3,5) thì tổng điểm bằng:. 43  2  1  5.333 3. 4 -2 -3 6 -2 -2 3 -9 2 -3 1 2 -3 2 1. Yêu cầu: Hãy tìm cách đi để có điểm cao nhất.. Dữ liệu vào: Từ tệp văn bản ‘J_BONUS.INP’ gồm nhiều dòng:.  Dòng 1: Ghi hai số nguyên dương m, n là kích thước của lưới ô vuông. M < 300, N < 300.  M dòng tiếp theo, mỗi dòng ghi N số nguyên a[i,j], với a[i,j] < 105.. Kết quả: Ghi ra tệp văn bản ‘J_BONUS.OUT’ điểm cao nhất tìm được. Lấy chính xác đến 3 số thập phân. J_BONUS.INP J_BONUS.OUT 35 5.333 4 -2 -3 6 -2 -2 3 -9 2 -3 1 2 -3 2 1 Trong đó: - Có 40% số điểm của câu với m < 100; n < 100; a[i,j] < 300. - Có 60% số điểm của câu với m > 290 ; n > 290; a[i,j] < 100000 -----------Hết------------. Họ tên thí sinh:………………………….. SBD:……………………………………. -. Giám thị số 1:……………….…….... Giám thị số 2:………………….….... Cán bộ coi thi không giải thích gì thêm. Thí sinh không sử dụng tài liệu.. 3.

<span class='text_page_counter'>(4)</span> -. SỞ GIÁO DỤC VÀ ĐÀO TẠO - LÀO CAI - --------------- CHÍNH THỨC. ĐÁP ÁN – THANG ĐIỂM. ĐỀ THI CHỌN HỌC SINH GIỎI CẤP TỈNH. NĂM HỌC 2015 - 2016. Môn: TIN HỌC (Đáp án- thang điểm gồm có 05 trang). Cách 1: Giám khảo cho chạy chương trình của thí sinh với lần lượt file input và so sánh với file out của đáp án, đúng thì cho điểm theo thang điểm không đúng thì không cho điểm. Cách 2: Copy bài thí sinh vào chương trình chấm tự động THEMIS có sẵn trong đĩa CD, chạy chương trình chấm. - Chú ý kiểm tra những bài luôn cho một kết quả và những bài bị 0 điểm. Câu 1: Dãy số - Primemax (6 điểm) Có 10 test =10 x 0.6 = 6 điểm. Câu 2. Egg (7điểm). Có 10 test=10x 0.7= 7 điểm Câu 3: Phần thưởng (7 điểm). Có 20 test = 20 x 0.35 = 7 điểm. Chương trình tham khảo Câu 1: Const fi='primemax.inp'; fo='primemax.out'; Maxn=100000; Type mang= array[1..maxn] of longint; Var a: mang; n,i,m:longint; f1,f2:text; Function nt(n:longint):boolean; var i:longint; Begin nt:=false; if n<2 then exit; for i:=2 to round(sqrt(n)) do. 4.

<span class='text_page_counter'>(5)</span> if n mod i=0 then exit; nt:=true; End; Procedure ntmax; var d,max:longint; Begin Max:=0; for i:=1 to n do if nt(a[i]) and (a[i]>max) then max:=a[i]; Writeln(f2,max); End; Procedure soxhmax; Var j,max,luu,d:longint; Begin max:=-maxint; for i:=1 to n do begin d:=1; for j:=i+1 to n do if a[i]=a[j] then d:=d+1; if d>max then Begin max:=d; luu:=a[i]; End; End; Writeln(f2,luu); End; BEGIN Assign(f1,fi); reset(f1); readln(f1,n); for i:=1 to n do read(f1,a[i]); Assign(f2,fo); rewrite(f2); ntmax; soxhmax; Close(f1);Close(f2); END. Câu 2: 5.

<span class='text_page_counter'>(6)</span> program Egg; const FI ='egg.inp'; FO = 'egg.out'; MAX_N = 2000000; var n, m, moneys : longint; a,b : array[1..MAX_N] of longint; procedure read_data; var i : longint; f : text; begin assign(f, FI); reset(f); readln(f, m, n); for i := 1 to n do readln(f, a[i], b[i]); close(f); end; procedure qSort(l, r: longint); var i, j, x, y : longint; begin i := l; j := r; x := a[(l+r) div 2]; repeat while a[i] < x do i := i + 1; while x < a[j] do j := j - 1; if i <= j then begin y := a[i]; a[i] := a[j]; a[j] := y; y := b[i]; b[i] := b[j]; b[j] := y; i := i + 1; j := j - 1; end; until i > j; if l < j then qSort(l, j); if i < r then qSort(i, r); end; procedure process; var x, i : longint; begin 6.

<span class='text_page_counter'>(7)</span> if n > 1 then qSort(1, n); moneys := 0; for i := 1 to n do begin if m >= b[i] then x := b[i] else x := m; moneys := moneys + a[i] * x; m := m - x; if m = 0 then break; end; end; procedure write_result; var f : text; begin assign(f, FO); rewrite(f); writeln(f, moneys); close(f); end; begin read_data; process; write_result; end. Câu 3: Uses math; Const fi='J_BONUS.INP'; fo='J_BONUS.OUT'; Nmax= 303; Var A: Array[0..Nmax,0..Nmax] Of Longint; C: Array[0..Nmax,0..Nmax] Of Real; Res: Real=-1e18; m,n,i0: Longint; Procedure Doctep; Var i,j: Longint; 7.

<span class='text_page_counter'>(8)</span> Begin Assign(input,fi); Reset(input); Readln(m,n); For i:=1 to m do For j:=1 to n do Read(a[i,j]); Close(input); End; Function maxx(x,y,z: Real): Real; Begin maxx:=max(max(x,y),z); End; Procedure Xuli; Var i,j: Longint; Begin For j:=1 to n do Begin a[0,j]:= low(longint); a[m+1,j]:= low(longint); End; For i:=1 to m do C[i,1]:=a[i,1]; For j:=2 to n do for i:=1 to m do if a[i,j]>=0 then C[i,j]:= maxx(c[i-1,j-1],c[i,j-1],c[i+1,j-1])+a[i,j] else C[i,j]:= maxx(c[i-1,j-1],c[i,j-1],c[i+1,j-1])/abs(a[i,j]); For i:=1 to m do if res<c[i,n] then res:=c[i,n]; End; Procedure Ghikq; var i,j: longint; Begin Assign(output,fo); Rewrite(output); Write(res:0:3); Close(output); End; Begin Doctep; Xuli; Ghikq; End.. -. 8.

<span class='text_page_counter'>(9)</span>

Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×