1. Trang chủ
  2. » Giáo án - Bài giảng

Download đề và đáp án thi học sinh giỏi môn tin học lớp 11 2007 2008 tỉnh quảng bình (khối chuyên)

4 270 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 4
Dung lượng 36 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Sở giáo dục - đào tạo QB Kỳ thi chọn học Sinh Giỏi lớp 11 Năm học 2007-2008 hớng dẫn chấm môn tin học Đề chính thức Dành cho học sinh Chuyên I/ Ph ơng pháp chung - Giám khảo tạo các bộ d

Trang 1

Sở giáo dục - đào tạo QB Kỳ thi chọn học Sinh Giỏi lớp 11

Năm học 2007-2008 hớng dẫn chấm môn tin học Đề chính thức Dành cho học sinh Chuyên I/ Ph ơng pháp chung

- Giám khảo tạo các 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 mẫu để tính kết quả của dữ liệu vào: SUM.PAS; GIAIMA.PAS; TSP.PAS

- Chơng trình học sinh chạy đúng mỗi bộ test, giám khảo cho 0.5 điểm Nh vậy, nếu câu hỏi có 3 điểm thì giám khảo phải tạo đợc 6 bộ test.

- Nếu chơng trình chạy sai test nào thì giám khảo cho 0 điểm đối với test đó.

- Với những bài có nhiều kết quả, nếu thí sinh đa ra kết quả khác với đáp án nhng vẫn đúng thì giám khảo cho điểm tối đa.

- Riêng câu 3:

+ Tổ chức đợc dữ liệu: 1 điểm.

+ 2.5 điểm còn lại giám khảo tạo 5 bộ test, mỗi test đúng cho 0.5 điểm.

II/ Ch ơng trình gợi ý

Program Tong_cac_chu_so;

Const fi='Sum.in4';

fo='Sum.out';

MaxN=1000;

Type Arr=Array[1 MaxN] of Word;

Var A:Arr;

N,K:Word;

Procedure Read_Data;

Var i:Word; f:Text;

Begin

Assign(f,fi);

Reset(f);

Readln(f,N);

For i:= 1 to N do

Read(f,A[i]);

Close(f);

End;

Function Sum(x:Word):Word;

Var so:Word;

Begin

so:=0;

While x<>0 do

Begin

So:=So + x mod 10;

x:= x Div 10;

end;

Sum:=so;

End;

Procedure Write_Data;

Var i:Word; f:Text;

Begin

Trang 2

Assign(f,fo);

ReWrite(f);

K:=0;

For i:= 1 to N do

if Sum(A[i]) mod 2 = 1 then

inc(K);

Writeln(f,K);

For i:= 1 to N do

if Sum(A[i]) mod 2 = 1 then

Write(f,i,#32);

Close(f);

End;

BEGIN

Read_Data;

Write_Data;

END

Program Giai_ma;

Const fi='Giaima.inp';

fo='Giaima.out';

A:array[1 8] of Byte = (128,64,32,16,8,4,2,1);

Var sti,sto: string;

Procedure Read_Data;

Var f:text;

Begin

Assign(f,fi);

Reset(f);

Readln(f,sti);

Close(f);

End;

Procedure Write_Data;

Var f:text;

Begin

Assign(f,fo);

ReWrite(f);

Writeln(f,sto);

Close(f);

End;

Function Gm(st1:string):Char;

Var so,i:Byte;

Begin

so:=0;

For i:=Length(st1) Downto 1 do

If st1[i]= '1' then

so:= so + A[i];

Gm:=Chr(so);

End;

Procedure Process;

Var i:Byte;

Begin

sto:='';

i:=1;

While i <= Length(sti) do

Begin

sto:=sto+Gm(Copy(sti,i,8));

inc(i,8);

end;

End;

Trang 3

Read_Data;

Process;

Write_Data;

END

Program Kien_leo_quanh_ong_tru;

Const MaxN=101;

fi='TSP.inp';

fo='TSP.ou1';

Type bb=Byte;ww=Word;ii=Integer; ll=Longint;

mmc=Array[1 MaxN] of bb;

mhc=Array[0 MaxN,0 MaxN] of ll;

Var QH:mhc;

n,m:bb;

(*****************)

Procedure Read_Data;

Var f:Text;

i,j:bb;

Begin

Assign(f,fi);

Reset(f);

Readln(f,m,n);

for i:=1 to m do

For j:=1 to n do

Read(f,QH[i,j]);

Close(f);

end;

(*****************)

Procedure Init;

var i:bb;

Begin

FillChar(QH,sizeof(QH),0);

Read_Data;

QH[0,1]:=QH[m,1];

QH[m+1,1]:=QH[1,1];

end;

(*****************)

Function Max(a,b,c:ll):ll;

Var mm:ll;

Begin

mm:=a;

if b>mm then mm:=b;

if c>mm then mm:=c;

Max:=mm;

end;

Procedure Processing;

Var i,j:bb;

Begin

For j:=2 to n do

Begin

For i:=1 to m do

QH[i,j]:=QH[i,j] + Max(QH[i-1,j-1],QH[i,j-1],QH[i+1,j-1]);

QH[m+1,j]:=QH[1,j];

QH[0,j]:=QH[m,j];

End;

end;

(*****************)

Trang 4

Procedure Write_Data;

Var f:Text;

i,Top,k,Row,col:bb;maxr:ll;

Vet:mmc;

Begin

Assign(f,fo);

ReWrite(f);

maxr:=0; Row:=0;

For i:=1 to m do

if QH[i,n] > maxr then

Begin

maxr:=QH[i,n];

Row:=i;

end;

Writeln(f,maxr);

FillChar(Vet,sizeof(Vet),0);

Top:=1;

Vet[Top]:=Row;

Col := n;

While Col > 1 do

Begin

k:=Row;

For i:=k-1 to k+1 do

if QH[i,Col-1]=Max(QH[Row-1,Col-1],QH[Row,Col-1],QH[Row+1,Col-1]) then

Begin

Row:=i;

if Row = 0 then Row := m;

if Row = m+1 then Row := 1;

end;

dec(Col);

inc(Top);

Vet[Top]:=Row;

end;

For i:=Top Downto 1 do

Write(f,Vet[i],' ');

Close(f);

end;

(*****************)

Begin

Init;

Processing;

Write_Data;

end

(***************************************************************************)

Ngày đăng: 13/10/2015, 16:15

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w