De Thi CHON HOC SINH GIOI LOP 11 mon TIN HOC

12 10 0
De Thi CHON HOC SINH GIOI LOP 11 mon TIN HOC

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

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

- Dòng 4: Ghi K số nguyên dương lần lượt là chỉ số của các phần tử trong dãy B tương ứng với các giá trị của phần tử đó trong dãy C, các số được ghi cách nhau một dấu cách... Ví dụ: DAYC[r]

(1)SỞ GD&ĐT QUẢNG BÌNH ĐỀ THI CHÍNH THỨC SỐ BÁO DANH: đề) KỲ THI CHỌN HỌC SINH GIỎI LỚP 11 THPT NĂM HỌC 2012 - 2013 Môn thi: TIN HỌC (Khóa thi ngày 27 tháng năm 2013) Thời gian làm bài: 180 phút (không kể thời gian giao (Đề thi gồm có 02 trang) ĐỀ 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 Cho số nguyên dương X, đảo ngược trật tự các chữ số X ta thu số nguyên dương Y, Y gọi là số đảo ngược X Ví dụ: X = 613 thì Y = 316 là số đảo ngược X Số nguyên dương Y gọi là số nguyên tố nó có hai ước số là và chính nó, số không phải là số nguyên tố Cho hai số nguyên dương P và Q (1 ≤ P ≤ Q ≤ 2109; Q - P ≤ 105) Yêu cầu: Hãy tìm tất các số nguyên dương X nằm thỏa mãn P ≤ X ≤ Q và số đảo ngược số X là số nguyên tố Dữ liệu vào: Cho file văn TIMSO.INP có cấu trúc sau: - Dòng 1: Ghi hai số nguyên dương P Q, hai số ghi cách ít dấu cách Dữ liệu ra: Ghi file văn TIMSO.OUT trên nhiều dòng, dòng ghi số nguyên X tìm dược Ví dụ: TIMSO.INP TIMSO.OUT 10 19 11 13 14 16 (2) 17 Câu 2: (3,5 điểm) Tính tổng TONG.PAS Cho hai số nguyên dương M và N, M có p chữ số và N có q chữ số Yêu cầu: Tính tổng hai số M và N Dữ liệu vào: Cho file văn TONG.INP có cấu trúc sau: - Dòng 1: Ghi số nguyên dương p là số lượng chữ số M (1 ≤ p ≤ 30000) - Dòng 2: Ghi p chữ số M theo thứ tự từ trái sang phải, các chữ số ghi cách ít dấu cách - Dòng 3: Ghi số nguyên dương q là số lượng chữ số N (1 ≤ q ≤ 30000) - Dòng 4: Ghi q chữ số N theo thứ tự từ trái sang phải, các chữ số ghi cách ít dấu cách Dữ liệu ra: Ghi file văn TONG.OUT theo cấu trúc sau: - Dòng 1: Ghi số nguyên dương k là số lượng chữ số tổng tìm - Dòng 2: Ghi k chữ số tổng tìm theo thứ tự từ trái sang phải, các chữ số ghi cách ít dấu cách Ví dụ: TONG.INP TONG.OUT 6 2 3 2 (Có 85% số test với p, q ≤ 20000; 15% số test với p, q >20000 ) Câu 3: (3,5 điểm) Dãy chung dài DAYCON.PAS Cho dãy số nguyên A gồm N phần tử a 1, a2, , aN và dãy số nguyên B gồm M phần tử b 1, b2, , bM Các phần tử dãy số có giá trị khác đôi (1 ≤ ai, bj ≤ 2109; ≤ N ≤ 100; ≤ i ≤ N; ≤ M ≤ 100; ≤ j ≤ M) (3) Dãy C gọi là dãy dãy A dãy C nhận từ dãy A cách xóa số phần tử và giữ nguyên thứ tự các phần tử còn lại Nếu dãy C là dãy dãy A và là dãy dãy B thì dãy C gọi là dãy chung hai dãy A và B Yêu cầu: Hãy tìm dãy C là dãy chung hai dãy A và B cho số lượng phần tử dãy C là lớn Dữ liệu vào: Cho file văn DAYCON.INP có cấu trúc sau: - Dòng 1: Ghi số nguyên dương N là số lượng phần tử dãy A - Dòng 2: Ghi N số nguyên là giá trị các phần tử dãy A, các số ghi cách ít dấu cách - Dòng 3: Ghi số nguyên dương M là số lượng phần tử dãy B - Dòng 4: Ghi M số nguyên là giá trị các phần tử dãy B, các số ghi cách ít dấu cách Dữ liệu ra: Ghi file văn DAYCON.OUT theo cấu trúc sau: - Dòng 1: Ghi số nguyên dương K là số lượng phần tử dãy C - Dòng 2: Ghi K số nguyên là giá trị các phần tử dãy C, các số ghi cách dấu cách - Dòng 3: Ghi K số nguyên dương là số các phần tử dãy A tương ứng với các giá trị phần tử đó dãy C, các số ghi cách dấu cách - Dòng 4: Ghi K số nguyên dương là số các phần tử dãy B tương ứng với các giá trị phần tử đó dãy C, các số ghi cách dấu cách Ví dụ: DAYCON.INP DAYCON.OU T 12 15 12 15 5 12 15 (4) HƯỚNG DẪN CHẤM 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 và so sánh kết - Giám khảo có thể sử dụng chương trình gợi ý đây để tính toán kết liệu vào - Đối với câu 1: Giám khảo phải tạo 06 test, chương trình học sinh đúng 01 test giám khảo cho 0.5 điểm Trong 06 test giám khảo phải tạo 01 test có Q-P = 105, 01 test giá trị P, Q > 65535 - Đối với câu 2: Giám khảo phải tạo 07 test, chương trình học sinh đúng 01 test giám khảo cho 0.5 điểm Trong 07 test giám khảo phải tạo 01 test có P, Q > 20000 - Đối với câu 3: + Có thể có nhiều kết đúng, học sinh đưa kết đúng khác với kết giám khảo thì cho điểm tối đa + Giám khảo phải tạo 05 test, chương trình học sinh đúng 01 test giám khảo cho 0.7 điểm + Đối với test: Nếu học sinh đưa đúng số lượng phần tử dãy chung thì giám khảo cho 0.3 điểm, đưa đúng dãy chung giám khảo cho 0.2 điểm, đưa đúng số các phần tử dãy A và dãy B ban đầu thì giám khảo cho 0.2 điểm Tổng điểm test là 0.7 điểm II- Chương trình gợi ý: Câu 1: (3,0 điểm) Tìm số Program Tim_so; Const fi='TIMSO.INP'; fo='TIMSO.OUT' ; Var P,Q:longint; Time:Longint; Times:Longint absolute 0:$46C; (5) Function NT(K:longint):Boolean; Var Can,i:Longint; Begin If (K=2) or (K=3) then Begin NT:=True;Exit; End; If (K<2) or (K mod = 0) or (K mod = 0) then Begin NT:=False; Exit; End; NT:=True; i:=5; Can:=Trunc(sqrt(K)); While i<=Can Begin if (K mod i = 0) or (K mod (i+2) =0) then Begin NT:=False; Exit; End ELse inc(i,6); End; End; Function Daoso(N:longint):longint; Var S:longint; Begin S:=0; While N<>0 Begin S:=S*10+ (N mod 10); N:=N div 10; End; Daoso:=S; End; Procedure Read_Data; (6) Var F:text; Begin Assign(f,fi); Reset(f); Read(f,P,Q); Close(f); End; Procedure Write_Data; Var f:text; j:longint; Begin Assign(f,fo); Rewrite(f); for j:=P to Q if NT(Daoso(j)) then Writeln(f,j); Close(f); End; BEGIN Time:=Times; Read_Data; Write_Data; Writeln((Times-Time)/18.2:0:2); Readln; END Câu 2: (3,5 điểm) Tính tổng Program Tinh_tong; Const fi= 'TONG.INP'; fo= 'TONG.OUT'; (7) MaxN=30000; Type mmc=Array [0 MaxN] of byte; Var N,M,Top:Longint; A,B:mmc;C:^mmc; Procedure Read_Data; Var f:text;i:Longint; Begin Assign(f,fi); Reset(f); Readln(f,N); For i:=1 to N Read(f,A[i]); Readln(f); Readln(f,M); New(C); Fillchar(C^,Sizeof(C^),0); For i:=1 to M Read(f,C^[i]); Close(f); End; Procedure Init; Var Tg,k:Longint; Begin If M=N then Begin Top:=N;B:=C^;Exit End; If N > M Then Begin Tg:=N-M; For K:=M Downto (8) B[K+Tg]:=C^[K]; Top:=N; End Else Begin Tg:=M-N; For K:=N Downto B[K+Tg]:=A[K]; A:=C^; Top:=M; End; Fillchar(C^,Sizeof(C^),0); End; Procedure Process; Var i,Nguyen,Tg:Longint; Begin Nguyen:=0; For i:= Top Downto Begin Tg:=(A[i]+B[i]+Nguyen); C^[i]:= Tg mod 10; Nguyen:=Tg Div 10; End; End; Procedure Write_Data; Var f:text;i:Longint; Begin Assign(f,fo); (9) Rewrite(f); if C^[0]>0 then Begin Writeln(f,Top+1); Write(f,C^[0],' '); End Else Writeln(f,Top); For i:=1 to Top Write(f,C^[i], ' '); Close(f); Dispose(C); End; BEGIN Read_Data; Init; Process; Write_Data; END Câu 3: (3,5 điểm) Dãy chung dài Program Day_con; Const fi='DAYCON.INP'; fo='DAYCON.OUT'; MaxN=101; Type mmc=Array[0 MaxN] of Longint; mhc=Array[0 MaxN] of mmc; (10) Var A,B,C:mmc; L:mhc; N,M,K:Longint; Time:Longint; Times: Longint absolute 0:$46C; Procedure Read_Data; Var f:Text; i:Longint; Begin Assign(f,fi); Reset(f); Readln(f,N); For i:=1 to N Read(f,A[i]); Readln(f,M); For i:=1 to M Read(f,B[i]); Fillchar(L,Sizeof(L),0); Close(f); End; Procedure Solution; Var i,j:Longint; Begin For i:=1 to N For j:=1 to M Begin if A[i] = B[j] then L[i,j]:=L[i-1,j-1]+1 Else (11) Begin L[i,j]:=L[i,j-1]; If L[i-1,j] > L[i,j-1] then L[i,j]:=L[i-1,j]; End; End; End; Procedure Write_Data; Var f:Text;i,j,Top:Longint;LA,LB:mmc; Begin Assign(f,fo); Rewrite(f); Writeln(f,L[N,M]); Top:=0; i:=N;j:=M; While (i>0) and (j>0) Begin if A[i] = B[j] then Begin inc(Top); LA[Top]:=i; LB[Top]:=j; dec(i); dec(j); End Else if L[i-1,j] > L[i,j-1] then (12) dec(i) Else dec(j); End; For i:=Top Downto Write(f,A[LA[i]],' '); Writeln(f); For i:=Top Downto Write(f,LA[i],' '); Writeln(f); For i:=Top Downto Write(f,LB[i],' '); Close(f); End; BEGIN Time:=Times; Read_Data; Solution; Write_Data; Writeln((Times-Time)/18.2:0:0); Readln; END (13)

Ngày đăng: 08/10/2021, 18:49

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

  • Đang cập nhật ...

Tài liệu liên quan