1. Trang chủ
  2. » Công Nghệ Thông Tin

De thi HSG mon tin hoc tinh binh dinh 20142015

6 256 2

Đ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 60 KB

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

Nội dung

Trang 1

SỞ GIÁO DỤC ĐÀO TẠO KỲ THI CHỌN HỌC SINH GIỎI CẤP TỈNH LỚP 9 THCS

ĐỀ CHÍNH THỨC Môn thi: TIN HỌC

Thời gian: 150 phút (không kể thời gian phát đề) Ngày thi: 18/3/2015

Tổng quan bài thi:

Bài Tên bài chương trình Tên tệp dữ liệu vào Tên tệp dữ liệu ra Tên tệp

1 Liên phân số LIENPS.PAS bàn phímNhập từ Xuất trênmàn hình

Bài 1: Liên phân số (7,0 điểm):

Số hữu tỉ dương a/b luôn được biểu diễn dưới dạng một liên phân số hữu hạn:

Liên phân số này ký hiệu là [q0,q1,q2, ,qn], trong đó q00; q1,q2, ,qn là những số nguyên dương; qn>1; n gọi là độ dài của liên phân số

Hãy viết chương trình biến đổi một phân số a/b thành liên phân số hữu hạn

Dữ liệu vào là hai số nguyên dương a, b nhập từ bàn phím để biểu diễn phân số a/b

Dữ liệu ra là một dòng gồm các số q0,q1,q2, ,qn biểu diễn dạng liên phân số của phân số a/b Các số viết cách nhau ít nhất một khoảng cách

Ví dụ:

a=7

Bài 2: Số nguyên tố cùng nhau: (7,0 điểm):

Hai số nguyên dương được gọi là nguyên tố cùng nhau nếu ước số chung lớn nhất của chúng bằng 1

Cho N số nguyên dương A1,A2, ,AN Gọi M là giá trị lớn nhất trong các số A1,A2, ,AN

Viết chương trình tìm số nguyên dương X lớn nhất không vượt quá M mà X nguyên tố cùng nhau với tất cả các số A1,A2, ,AN

Dữ liệu vào là tệp NTCN.Inp có cấu trúc như sau:

- Dòng đầu là số nguyên dương N (N100)

- N dòng tiếp theo, mỗi dòng chứa một giá trị tương ứng A1,A2, ,AN (Ai1000;i=1,2, ,N)

Dữ liệu ra là tệp NTCN.Out chứa số nguyên X tìm được thỏa mãn điều kiện của bài toán

Ví dụ:

3 4 12 15

13

Trang 2

Bài 3: Tìm đường hái quả (6,0 điểm):

Một khu vườn hình chữ nhật kích thước MxN được chia thành các ô vuông đơn vị để trồng một loại cây ăn quả Trên mỗi ô thì số quả tương ứng có thể hái được là A[i,j] (1iM; 1jN)

Một người khách dạo qua vườn và hái tất cả các quả trên những ô đi qua Vị trí xuất phát từ ô [1,1] và kết thúc tại ô [M,N] với hành trình là sang ô chung cạnh theo hướng tăng của i hoặc j (sang phải hoặc đi xuống – như hình vẽ) Hãy viết chương trình tìm lộ trình đi của người đó để hái được nhiều quả nhất

Dữ liệu vào là tệp HAIQUA.INP có cấu trúc như sau:

- Dòng đầu tiên là hai số M, N nguyên dương cách nhau một khoảng cách (0<M,N<100)

- M dòng tiếp theo, mỗi dòng gồm N số tương ứng là số quả có thể hái được ở các ô theo thứ tự tại hàng thứ i Mỗi số cách nhau một khoảng cách

Dữ liệu ra là tệp HAIQUA.OUT cso cấu trúc như sau:

- Dòng đầu là số quả lớn nhất có thể hái được theo một lộ trình thỏa mãn yêu cầu

- Dòng tiếp theo gồm M+N-1 số tương ứng là số quả hái ở từng ô theo đường đi để được số quả nhiều nhất Mỗi số cách nhau ít nhất một khoảng cách

Ví dụ:

4 5

1 3 5 7 2

7 9 4 2 2

2 3 1 6 7

7 4 6 2 5

41

1 7 9 4 2 6 7 5

Trang 3

Bài giải tham khảo: Câu 1: LienPS.Pas:

Uses Crt;

Var q:Array[1 100] of Word;

Function Uc(x,y:Word):Word;

Var r:Word;

Begin

y:=r;

End;

Uc:=x;

End;

Procedure Psrg;

Var m:Word;

Begin m:=Uc(a,b);

a:=a div m;

b:=b div m;

End;

Procedure Xuli;

Begin

k:=0;

Repeat

If a>b then Begin q[k]:= a div b;

a:= a mod b;

End Else Begin q[k]:= b div a;

b:= b mod a;

End;

inc(k);

Until (a=1) or (b=1);

If a<>1 then q[k]:=a Else q[k]:=b;

For i:=0 to k do

Write(q[i],' ');

End;

Begin

Clrscr;

Repeat

Trang 4

Write('Nhap a: '); Readln(a);

Write('Nhap b: '); Readln(b);

Until (a>0) and (b>0);

Psrg;

If a<=b then Write(0,' ',b)

Else Xuli;

Readln

End.

Câu 2: NTCN.Pas:

Const fi='D:\Ntcn.Inp';

fo='D:\Ntcn.Out';

a:mmc;

f,g:Text;

Var r:Word;

Begin

While y<>0 do

Begin r:=x mod y;

x:=y;

y:=r;

End;

If x=1 then Uc:=True

Else Uc:=False;

End;

Function mUc(c:mmc;k:Byte;m:Word):Boolean; Var i:Byte;

kt:Boolean;

Begin

Kt:=True;

For i:=1 to k do

Kt:=(Uc(m,c[i]) and Kt);

mUc:=Kt;

End;

m:Word;

Begin

m:=a[1];

For i:=2 to k do

If m<a[i] then m:=a[i];

Max:=m;

Trang 5

Begin

Reset(f);

Readln(f,n);

For i:=1 to n do

Readln(f,a[i]);

Close(f);

m:=Max(a,n)-1;

Assign(g,fo);

Rewrite(g);

Repeat

If mUc(a,n,m) then

Begin Write(g,m);

Close(g);

Exit;

End Else dec(m);

Until m=0;

End.

Câu 3: Haiqua.Pas:

fo='D:\Haiqua.Out';

Type m2c=Array[1 100,1 100] of Word; mmc=Array[1 100] of Word;

a:m2c;

b:mmc;

f,g:Text;

Begin

Assign(f,fi);

Reset(f);

Readln(f,m,n);

For i:=1 to m do

Begin

For j:=1 to n do Read(f,a[i,j]);

Readln(f);

End;

Close(f);

max:=a[1,1];

fillchar(b,sizeof(b),0);

b[1]:=max;

Trang 6

While (i<=m) and (j<=n) do

Begin

inc(k);

If a[i+1,j]>a[i,j+1] then Begin

inc(i);

max:=max+a[i,j];

b[k]:=a[i,j];

End Else Begin

If a[i+2,j]>a[i,j+2] then Begin

inc(i);

max:=max+a[i,j]; b[k]:=a[i,j]; End

Else inc(j);

max:=max+a[i,j];

b[k]:=a[i,j];

End;

End;

Dec(k);

Assign(g,fo);

Rewrite(g);

Writeln(g,max);

For i:=1 to k do

Write(g,b[i],' ');

Close(g);

End.

Ngày đăng: 17/04/2019, 16:07

TỪ KHÓA LIÊN QUAN

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

w