1. Trang chủ
  2. » Hóa học

Tải Đề thi học sinh giỏi lớp 11 THPT tỉnh Quảng Bình năm học 2012 - 2013 môn Tin học - Có đáp án - Sở GD&ĐT Quảng Bình

6 42 0

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

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 6
Dung lượng 15,48 KB

Nội dung

- 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.. - Đối với câu 1: Giám khảo phải tạo được 06 bộ test, chương trình học sinh đúng 01 bộ test g[r]

(1)

Së Gd&§t kú thi CHäN häc sinh giái líp 11 thpt Qu¶ng bình năm học 2012 - 2013

M«n thi: tin häc

Đề thi thức (Khóa thi ngày 27 tháng năm 2013)

S Bỏo Danh: 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 tố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ự chữ số X ta thu được một số nguyên dương Y, Y gọi số đảo ngược X.

Ví dụ: X = 613 Y = 316 số đảo ngược X.

Số nguyên dương Y gọi số nguyên tố có hai ước số và chính nó, số khơng phải số nguyên tố.

Cho hai số nguyên dương P Q (1 ≤ P ≤ Q ≤ 2109; Q - P ≤ 105).

Yêu cầu: Hãy tìm tất số nguyên dương X nằm thỏa mãn P ≤ X ≤ Q số đảo ngược số X 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 một dấu cách.

Dữ liệu ra: Ghi file văn TIMSO.OUT nhiều dòng, dòng ghi số ngun X tìm dược.

Ví dụ:

TIMSO.INP TIMSO.OUT

10 19 11

13 14 16 17

Câu 2: (3,5 điểm) Tính tổng TONG.PAS

Cho hai số nguyên dương M N, M có p chữ số N có q chữ số. u cầu: Tính tổng hai số M 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 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, chữ số ghi cách dấu cách.

- Dòng 3: Ghi số nguyên dương q 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, chữ số ghi cách 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 số lượng chữ số tổng tìm được.

- Dịng 2: Ghi k chữ số tổng tìm theo thứ tự từ trái sang phải, chữ số được ghi cách dấu cách.

Ví dụ:

(2)

6

2 3 9 3

2 7

6

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ử a1, a2, , aNvà dãy số nguyên B gồm M

phần tử b1, b2, , bM Các phần tử dãy số có giá trị khác đôi một.

(1 ≤ ai, bj ≤ 2109; ≤ N ≤ 100; ≤ i ≤ N; 1 ≤ M ≤ 100; 1 ≤ j ≤ M).

Dãy C gọi dãy dãy A dãy C nhận từ dãy A bằng cách xóa số phần tử giữ nguyên thứ tự phần tử lại

Nếu dãy C dãy dãy A dãy dãy B dãy C được gọi dãy chung hai dãy A B.

Yêu cầu: Hãy tìm dãy C dãy chung hai dãy A B cho số lượng phần tử dãy C lớn nhất.

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 số lượng phần tử dãy A.

- Dòng 2: Ghi N số nguyên giá trị phần tử dãy A, số ghi cách dấu cách.

- Dịng 3: Ghi số nguyên dương M số lượng phần tử dãy B.

- Dòng 4: Ghi M số nguyên giá trị phần tử dãy B, số ghi cách 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 số lượng phần tử dãy C.

- Dòng 2: Ghi K số nguyên giá trị phần tử dãy C, số ghi cách dấu cách.

- Dòng 3: Ghi K số nguyên dương số phần tử dãy A tương ứng với giá trị phần tử dãy C, số ghi cách nhau một dấu cách.

- Dòng 4: Ghi K số nguyên dương số phần tử dãy B tương ứng với giá trị phần tử dãy C, số ghi cách nhau một dấu cách.

Ví dụ:

DAYCON.INP DAYCON.OUT

6

9 12 15 5

3 12 15

4

3 12 15 2 6 1 5

(3)

Së GD&§T kú thi CHäN häc sinh giái líp 11 THPT Quảng bình năm häc 2012 - 2013

M«n thi: tin häc

híng dÉn chÊm

I- Phương pháp:

- Giám khảo tạo liệu vào, tính tốn kết Thực chương trình của học sinh so sánh kết quả.

- Giám khảo sử dụng chương trình gợi ý để tính tốn kết quả của 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 được 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 được 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 nhưng khác với kết giám khảo cho điểm tối đa.

+ Giám khảo phải tạo 05 test, chương trình học sinh 01 test giám khảo cho 0.7 điểm.

+ Đối với test: Nếu học sinh đưa số lượng phần tử dãy con chung giám khảo cho 0.3 điểm, đưa dãy chung giám khảo cho 0.2 điểm, đưa số phần tử dãy A dãy B ban đầu giám khảo cho 0.2 điểm Tổng điểm test 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; 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; Var F:text;

Begin

(4)

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'; 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 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;

(5)

Procedure Write_Data; Var f:text;i:Longint; Begin

Assign(f,fo); 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 nhất 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; 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

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

(6)

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 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;

Ngày đăng: 05/02/2021, 18:19

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w