TUYỂN CHỌN
ĐỀ THI HỌC SINH GIỎI
MÔN TIN HỌC
LỚP 9
(có đáp án và thang điểm)
Tp. Hồ Chí Minh, ngày 1/8/2016
SỞ GIÁO DỤC VÀ ĐÀO TẠO KỲ THI CHỌN HỌC SINH GIỎI LỚP 9 CẤP TỈNH
LONG AN
MÔN: TIN HỌC
NGÀY THI: 11/4/2012
THỜI GIAN: 150 PHÚT (Không kể thời gian phát đề)
ĐỀ THI CHÍNH THỨC
Lưu ý: Thí sinh tạo thư mục là SBD của mình, làm bài và lưu với tên tập tin là
bai1.pas, bai2.pas, bai3.pas vào thư mục SBD vừa tạo.
Câu 1: (7 điểm) Số nguyên dương n gọi là song tố khi n là số nguyên tố và tổng
chữ số của nó cũng là số nguyên tố.
Yêu cầu: Viết chưong trình thực hiện công việc sau:
a) Nhập vào số nguyên n. Hãy cho biết n có là số song tố hay không?
b) In ra các số song tố bé hơn hoặc bằng n.
c) In ra các cặp số nguyên tố lẻ liên tiếp nhỏ hơn hoặc bằng n.
Ví dụ:
Nhập
Câu a
Câu b
Câu c
n=11 So n la so song to
2 3 5 7 11
(3,5); (5,7)
Câu 2: (7.0 điểm) Cho một chuỗi gồm n2 ký tự. Người ta cắt chuỗi từ trái sang phải
thành n chuỗi con, mỗi chuỗi con có đúng n ký tự. Viết mỗi chuỗi con thành một
cột, ta có một bảng gồm n hàng và n cột ký tự.
Yêu cầu: Viết chương trình nhập vào một chuỗi gồm n2 ký tự (4 n2 255).
a) In ra màn hình các hàng có tổng mã ASCII của các ký tự là lớn nhất.
b) In giá trị tổng ở câu a ra màn hình.
Ví dụ:
Nhập chuỗi Bảng
Kết quả
abcdefghi
adg
a) c f i
beh
b) 306
cf i
Câu 3: (6.0 điểm) Khi đào hầm Thủ Thiêm người ta dùng một Robot để đào, ban
đầu người ta đào đường hầm 1 đơn vị độ dài sau đó đặt Robot xuống. Robot này
được điều khiển bởi 2 lệnh là: C1 và N2.
- Lệnh C1 là đào thêm 1 đơn vị độ dài thì tốn 2 đơn vị năng lượng.
- Lệnh N2 là đào thêm một đoạn đường hầm bằng độ dài đang có thì tốn 4
đơn vị năng lượng.
Hãy viết chương trình ra lệnh cho Robot đào một đường hầm có độ dài k
đơn vị độ dài với các lệnh là ít nhất và sự tiêu tốn năng lượng là thấp nhất. Biết
ban đầu đường hầm dài 1 đơn vị độ dài.
Yêu cầu:
- Dữ liệu vào trong tập tin Robot.inp gồm một số k là độ dài đường hầm
cần đào.
- Dữ liệu ra trong tập tin Robot.out gồm hai dòng:
+ Dòng đầu là số năng lượng ít nhất đã tiêu tốn cho Robot đào hầm.
+ Dòng tiếp theo chứa các lệnh C1 hoặc N2, mỗi lệnh cách nhau 1 khoảng
trắng.
Ví dụ:
Robot.inp
10
Robot.out
12
C1 N2 C1
N2
(Giám thị coi thi không giải thích gì thêm)
--- Hết---
SỞ GIÁO DỤC VÀ ĐÀO TẠO KỲ THI CHỌN HỌC SINH GIỎI LỚP 9 CẤP TỈNH
LONG AN
MÔN: TIN HỌC
NGÀY THI: 11/4/2012
THỜI GIAN: 150 PHÚT (Không kể thời gian phát đề)
ĐỀ THI CHÍNH THỨC
HƯỚNG DẪN CHẤM
Bài 1 : (7 điểm)
Nhập
Câu a
So n la so song to
So n khong la so song
to
So n la so song to
So n khong la so song
to
n=7
n=20
n=23
n=31
Kết quả
Câu b
2357
2 3 5 7 11
2 3 5 7 11 23
2 3 5 7 11 23 29
Điểm
Câu c
(3,5); (5,7)
(3,5); (5,7); (11,13); (17,19)
2.0
(3,5); (5,7); (11,13); (17,19)
(3,5); (5,7); (11,13);
(17,19); (29,31)
1.5
Bài 2: (7.0 điểm)
Test
1
2
3
Nhập chuỗi
Kết quả
a) O H L I T
HOCSINHGIOILOPCHINCAPTINH
b) 384
a) A E I J
DHLA
ABCDEFGHIJKLJAAA
b) 281
a) s h z b
asdfghjklzxcvb q m
djxq
Điểm
1.0
1.0
0.5
1.0
1.0
0.5
1.0
2.0
1.5
b) 439
1.0
Bài 3: (6.0 điểm)
Test
Robot.inp
1
12
2
155
3
1053
Robot.out
12
C1 C1 N2 N2
43
C1 N2 N2 C1 N2 C1 N2 N2 C1 N2 C1
46
C1 N2 N2 N2 N2 N2 C1 N2 C1 N2 C1 N2 N2 C1
---Hết---
Điểm
1.0
1.0
1.0
1.0
1.0
1.0
SỞ GIÁO DỤC & ĐÀO TẠO
LÂM ĐỒNG
KÌ THI CHỌN HỌC SINH GIỎI CẤP TỈNH
NĂM HỌC 2010 - 2011
ĐỀ THI CHÍNH THỨC
(Đề thi có 02 trang, gồm 3 bài)
Môn : TIN HỌC - THCS
Thời gian : 150 phút (không kể thời gian giao đề)
Ngày thi : 18/2/2011
Cấu trúc đề thi:
STT
Tên bài
1
PHẦN TỬ YÊN
NGỰA
2
TỔNG CÁC SỐ
FIBONACI
3
CHỌN PHẦN
THƯỞNG
Tên file bài làm
PTYN.PAS
Tên file INPUT
PTYN.INP
Tên file OUTPUT
PTYN.OUT
FIBO.PAS
FIBO.INP
FIBO.OUT
PTHUONG.PAS
PTHUONG.INP
PTHUONG.OUT
Bài 1: (6 điểm) PHẦN TỬ YÊN NGỰA
Cho mảng 2 chiều A có kích thước MxN số nguyên. Phần tử A[i,j] được gọi là
phần tử yên ngựa nếu nó là phần tử nhỏ nhất trong hàng i đồng thời là phần tử lớn nhất
trong cột j.
Em hãy lập chương trình tìm phần tử yên ngựa của mảng A.
Dữ liệu vào: cho file PTYN.INP gồm:
- Dòng đầu tiên gồm 2 số M, N (0 ≤ M,N ≤100)
- M dòng tiếp theo, mỗi dòng gồm có N số nguyên của mảng A
(các giá trị cách nhau ít nhất 1 khoảng cách).
Dữ liệu ra: ghi ra file PTYN.OUT vị trí của các phần tử yên ngựa (nếu có) hoặc dòng
thông báo “Không có phần tử yên ngựa”.
Ví dụ:
PTYN.INP
PTYN.OUT
33
(2,2)
15
3
9
55
4
6
76
1
2
Hoặc :
PTYN.INP
PTYN.OUT
33
Khong co phan tu yen ngua
15
10
5
55
4
6
76
1
2
Bài 2: (7 điểm) TỔNG CÁC SỐ FIBONACI
Dãy Fibonaci là dãy gồm các số: 1, 1, 2, 3, 5, 8, .... được xác định bởi công thức
sau:
F1=1, F2=1, Fi=Fi-1+Fi-2 với i>2.
Em hãy biểu diễn một số tự nhiên N thành tổng của ít nhất các số Fibonaci khác
nhau.
Dữ liệu vào: cho file FIBO.INP chứa số N (N ≤ 2000000000)
Dữ liệu ra: ghi ra file FIBO.OUT biểu diễn số N thành tổng của ít nhất các số
Fibonaci khác nhau.
Ví dụ:
FIBO.INP
129
FIBO.OUT
129 = 89 + 34 + 5 + 1
Hoặc
FIBO.INP
8
FIBO.OUT
8=8
Bài 3: (7 điểm) CHỌN PHẦN THƯỞNG
Trong kỳ thi học sinh giỏi môn Tin học, em là người đạt giải đặc biệt. Ban tổ chức
cho phép em chọn các phần thưởng cho mình. Các phần thưởng xếp thành một dãy
được đánh số từ 1 đến N (0 ≤ N ≤ 10000), phần thưởng thứ i có giá trị là ai (1 ≤ ai ≤
100). Em được phép chọn các phần thưởng cho mình theo nguyên tắc không chọn 3
phần thưởng liên tiếp nhau trong dãy.
Viết chương trình để máy tính hướng dẫn em chọn các phần thưởng sao cho tổng
giá trị của các phần thưởng nhận được là lớn nhất.
Dữ liệu vào: cho file PTHUONG.INP gồm các dòng:
- Dòng đầu tiên là số phần thưởng N
- N dòng tiếp theo lần lượt là giá trị của các phần thưởng.
Dữ liệu ra: ghi ra file PTHUONG.OUT gồm các dòng:
- Dòng đầu tiên ghi tổng giá trị lớn nhất của các phần thưởng đã chọn
- Dòng tiếp theo ghi vị trí của các phần thưởng đã chọn theo thứ tự tăng dần.
Ví dụ:
PTHUONG.INP
5
6
9
1
PTHUONG.OUT
23
1245
3
5
Hoặc
PTHUONG.INP
7
6
9
1
3
5
10
4
PTHUONG.OUT
32
12467
----------HẾT----------
Họ và tên thí sinh: ....................................................... Số báo danh: ..................................
Giám thị 1:................................................................... Ký tên: ...........................................
Giám thị 2:................................................................... Ký tên: ...........................................
SỞ GIÁO DỤC & ĐÀO TẠO
KÌ THI CHỌN HỌC SINH GIỎI CẤP TỈNH
NĂM HỌC 2010 – 2011
LÂM ĐỒNG
HƯỚNG DẪN CHẤM ĐỀ CHÍNH THỨC
Môn :
TIN HỌC - THCS
Ngày thi : 18/2/2011
Bài 1: (6 điểm)
Có 6 bộ TEST, chạy đúng mỗi bộ cho 1 điểm.
STT
TEST.INP
1
3 3
15 3 9
55 4 6
76 1 2
2
3 4
15 10 8 8
55 4 6 2
76 9 12 7
3
3 4
15 10 8 8
55 4 6 2
76 9 12 8
4
45
11111
11111
11111
11111
5
TEST5INP (dữ liệu trên đĩa hướng
dẫn chấm)
6
TEST6INP (dữ liệu trên đĩa hướng
dẫn chấm)
Bài 2: (7 điểm)
Có 7 bộ TEST, chạy đúng mỗi bộ cho 1 điểm.
STT
TEST.INP
1
10
2
89
3
129
4
1000
5
11594
6
14930352
TEST.OUT
(2,2);
(1,4);
(1,4); (3,4)
(1,1); (1,2); (1,3); (1,4); (1,5); (2,1);
(2,2); (2,3); (2,4); (2,5); (3,1); (3,2);
(3,3); (3,4); (3,5); (4,1); (4,2); (4,3);
(4,4); (4,5);
Khong co phan tu yen ngua
(6,1)
TEST.OUT
10 = 8 + 2
89 = 89
129 = 89 + 34 + 5 + 1
1000 = 987 + 13
11594 = 10946 + 610 + 34 + 3 + 1
14930352 = 14930352
7
246854244
246854244 = 165580141 + 63245986
+ 14930352 + 2178309 + 832040 +
75025 + 10946 + 987 + 377 + 55 + 21
+5
Bài 3: (7 điểm)
Có 7 bộ TEST, chạy đúng mỗi bộ cho 1 điểm.
STT
1
2
3
4
5
6
TEST.INP
5
6
9
1
3
5
7
6
9
1
3
5
10
4
5
2
2
2
2
2
100
1
2
3
4
…..
99
100
3
1
2
3
5
1
0
TEST.OUT
23
1245
32
12467
8
1245
3400
1 3 4 6 7 9 10 12 13 15
16 18 19 21 22 24 25 27 28 30
31 33 34 36 37 39 40 42 43 45
46 48 49 51 52 54 55 57 58 60
61 63 64 66 67 69 70 72 73 75
76 78 79 81 82 84 85 87 88 90
91 93 94 96 97 99 100
5
23
8
135
7
3
0
4
10
1
6
3
20
4
23
4
57
87
100
241
1 2 4 6 7 9 10
-----HẾT-----
SỞ GIÁO DỤC VÀ ĐÀO TẠO
BÌNH ĐỊNH
Đề chính thức
KỲ THI CHỌN HỌC SINH GIỎI CẤP TỈNH LỚP 9 THCS
KHÓA NGÀY: 18-3-2016
Môn thi:
Thời gian:
Ngày thi:
Tổng quan đề thi:
TIN HỌC
150 phút (không kể thời gian phát đề)
18/3/2016
(Đề thi có 02 trang)
Bài
Tên bài
1
2
3
Cặp số thân thiết (6,0 điểm)
Dãy có giá trị lớn nhất (7,0 điểm)
Đường đi tốt nhất (7,0 điểm)
Tên tệp
chương trình
Tên tệp
dữ liệu vào
Tên tệp
dữ liệu ra
SO_TT.PAS
Bàn phím
Màn hình
DAYCON.PAS
DAYCON.INP
DAYCON.OUT
DUONGDI.PAS
DUONGDI.INP
DUONGDI.OUT
Bài 1: Cặp số thân thiết (6,0 điểm):
Hai số nguyên dương được gọi là thân thiết nếu chúng có cùng ước số nguyên tố lớn nhất.
Hãy viết chương trình kiểm tra xem hai số nguyên dương có là cặp số thân thiết hay không?
Dữ liệu vào là hai số nguyên dương a, b (1< a, b <1010) nhập từ bàn phím.
Dữ liệu ra gồm:
- Ước nguyên tố lớn nhất của từng số;
- Kết luận: “La cap so than thiet” hoặc “Khong than thiet”.
Ví dụ:
Input
Output
Nhap hai so: 18 2016
UNTLN tuong ung: 3, 7
Khong than thiet
Input
Nhap hai so: 50 15
Output
UNTLN tuong ung: 5, 5
La cap so than thiet
Bài 2: Dãy có giá trị lớn nhất (7,0 điểm):
Cho một xâu S có chiều dài N (1≤N≤100) chỉ gồm các chữ số từ 1 đến 9 và một số nguyên
dương k (k≤N). Hãy viết chương trình xóa bớt các ký tự trong xâu S để còn lại một xâu gồm
k chữ số biểu thị số lớn nhất có k chữ số thu được theo cách này?
Dữ liệu vào là tệp DAYCON.INP có cấu trúc gồm hai dòng:
- Dòng thứ nhất chứa xâu S;
- Dòng thứ hai chứa số tự nhiên k.
Dữ liệu ra là tệp DAYCON.OUT là xâu có chiều dài k cần tìm.
Ví dụ:
DAYCON.INP
DAYCON.OUT
135792468
968
3
Bài 3: Đường đi tốt nhất (7,0 điểm):
Sân chơi là một mặt phẳng chia ra thành N hàng đánh số từ 1 đến N (1
i (1≤ i ≤ N) có i ô điểm có giá trị cho trước là những số nguyên dương (không vượt quá
1000). Trò chơi là chọn một lộ trình với ô xuất phát là ô ở hàng thứ nhất, lần lượt đi qua một
trong 2 ô lân cận ở hàng tiếp theo (theo hướng mũi tên) cho đến khi đến được một ô ở hàng
cuối cùng và thu nhặt các điểm số có ở các ô trên đường đi qua (lộ trình sẽ thăm đúng N ô)
(Hình vẽ dưới minh họa cho một ví dụ với N=4).
Cho trước một bảng biểu thị giá trị điểm số các ô trên từng hàng. Hãy lập trình tìm một lộ
trình hợp quy định của luật chơi và thu được điểm số cao nhất.
Dữ liệu vào là tệp DUONGDI.INP có cấu trúc như sau:
- Dòng thứ nhất chứa số tự nhiên N;
- N dòng tiếp theo sẽ chứa các giá trị điểm số trên các ô điểm ở dòng tương ứng. Dòng
thứ i sẽ có i giá trị. Các giá trị cách nhau một khoảng trắng.
Dữ liệu ra là tệp DUONGDI.OUT gồm 2 dòng:
- Dòng thứ nhất chứa giá trị tổng điểm lớn nhất thu được theo lộ trình tối ưu;
- Dòng thứ 2 chứa N số nguyên là giá trị các ô điểm mà lộ trình tối ưu đi qua.
8
5
2
3
1
6
4
9
2
3
Ví dụ:
DUONGDI.INP
4
8
51
269
3423
DUONGDI.OUT
23
8564
Chú ý: Nếu chỉ nêu được số điểm lớn nhất mà không chỉ được lộ trình đi thì được ½
số điểm của bài.
_______________________________
Bài 1: Cặp số thân thiết:
Program So_TT;
Uses Crt;
Var a,b:Longint;
Procedure Nhap;
Begin
Clrscr;
Write('Nhap hai so: ');
Readln(a,b);
End;
Function Kt(n:Longint):Boolean;
Var i:Longint;
d:Shortint;
Begin
d:=0;
Kt:=True;
For i:=2 to Round(Sqrt(n)) do
Begin
If (n mod i)=0 then d:=d+1;
If d>0 then
Begin
Kt:=False;
Break;
End;
End;
End;
Procedure Xuli;
Var aa,bb,i,j:Longint;
Begin
aa:=0;
bb:=0;
For i:=a downto 2 do
If (a mod i =0) and (Kt(i)) then
Begin
aa:=i;
Break;
End;
For j:=b downto 2 do
If ((b mod j = 0) and Kt(j)) then
Begin
bb:=j;
Break;
End;
Writeln('UNTLN tuong ung: ',aa,', ',bb);
If aa=bb then
Writeln('La cap so than thiet')
Else
Writeln('Khong than thiet');
Readln
End;
Begin
Nhap;
Xuli;
End.
Bài 2: Dãy có giá trị lớn nhất:
Program Daymax;
Type
Strings=String[100];
Const
A:Array['1'..'9'] of Byte = (1,2,3,4,5,6,7,8,9);
B:Array[1..9] of String = ('1','2','3','4','5','6','7','8','9');
fi='D:\Daycon.Inp';
fo='D:\Daycon.Out';
Var
S:Strings;
k:Byte;
f:Text;
Procedure Nhap;
Begin
Assign(f,fi);
Reset(f);
Readln(f,s);
Read(f,k);
Close(f);
End;
Function Vitri(S:Strings):Strings;
Var i,n,max:Byte;
Begin
n:=Length(s);
max:=1;
For i:=2 to n-k+1 do
If a[s[max]] < a[s[i]] then
max:=i;
Vitri:=Copy(s,max,n-max+1);
End;
Procedure Xuli;
Var cs,vt,n:Byte;
Begin
Assign(f,fo);
Rewrite(f);
n:=Length(s);
If n=k then Write(f,s)
Else
Begin
s:=Vitri(s);
cs:=1;
Repeat
vt:=pos(b[cs],s);
While (vt<>0) and (n>k) do
Begin
Delete(s,vt,1);
vt:=pos(b[cs],s);
n:=Length(s);
End;
inc(cs);
Until n=k;
Writeln(f,s);
End;
Close(f);
End;
Begin
Nhap;
Xuli;
End.
Bài 3: Đường đi tốt nhất:
Program DuongDi;
Const
maxN =100;
fi='D:\Duongdi.Inp';
fo='D:\Duongdi.Out';
Var
n:Word;
A :Array[1..maxN,1..maxN] of Word;
F :Array[0..maxN,0..maxN] of Word;
g:Text;
Procedure Nhap;
Var i,j :Word;
Begin
Assign(g,fi);
Reset(g);
Read(g,n);
For i:=1 to n do
Begin
For j:=1 to i do Read(g,A[i,j]);
Readln(g);
End;
Close(g);
End;
Function Max(i,j:Word):Word;
Begin
If i>j then max:=i
Else max:=j;
End;
Procedure Toiuu;
Var i,j :Word;
Begin
For i:=1 to n-1 do
Begin
F[i,0]:=-1; F[i,i+1]:=-1;
End;
F[0,0]:=0; F[1,1]:=A[1,1];
For i:=2 to n do
For j:=1 to i do
F[i,j]:=Max(F[i-1,j-1],F[i-1,j])+A[i,j];
End;
Procedure Truyvet(i,j :Word);
Begin
If (F[i,j]=F[i-1,j-1]+A[i,j]) then
Dec(j);
Dec(i);
If (i>0) then
Begin
Trace(i,j);
Write(g,a[i,j],' ');
End;
End;
Procedure Xuat;
Var i,iMax :Word;
Begin
Assign(g,fo);
Rewrite(g);
iMax:=1;
For i:=2 to n do
If (F[n,iMax]
Writeln(g,F[n,iMax]);
Truyvet(n,iMax);
Write(g,a[n,iMax]);
Close(g);
End;
Begin
Nhap;
Toiuu;
Xuat;
End.
SỞ GIÁO DỤC ĐÀO TẠO
BÌNH ĐỊNH
ĐỀ CHÍNH THỨC
KỲ THI CHỌN HỌC SINH GIỎI CẤP TỈNH LỚP 9 THCS
KHÓA NGÀY: 18-3-2015
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
1
Liên phân số
2
Số nguyên tố cùng nhau
3
Tìm đường hái quả
Tên tệp
chương trình
NTCN.PAS
Tên tệp
dữ liệu vào
Nhập từ
bàn phím
NTCN.INP
Tên tệp
dữ liệu ra
Xuất trên
màn hình
NTCN.OUT
HAIQUA.PAS
HAIQUA.INP
HAIQUA.OUT
LIENPS.PAS
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:
a
q0
b
1
1
q1
q2
1
...
1
qn
Liên phân số này ký hiệu là [q0,q1,q2,...,qn], trong đó q00; 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ụ:
Input
Output
a=7
122
b=5
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 (N100).
- N dòng tiếp theo, mỗi dòng chứa một giá trị tương ứng A1,A2,...,AN (Ai1000;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ụ:
NTCN.Inp
NTCN.Out
3
13
4
12
15
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] (1iM; 1jN).
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.
1
3
5
7
2
7
9
4
2
2
2
3
1
6
7
7
4
6
2
5
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 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ụ:
HAIQUA.INP
HAIQUA.OUT
45
41
13572
17942675
79422
23167
74625
Bài giải tham khảo:
Câu 1: LienPS.Pas:
Uses Crt;
Var q:Array[1..100] of Word;
a,b,i,k:Word;
Function Uc(x,y:Word):Word;
Var r:Word;
Begin
While y<>0 do
Begin
r:=x mod y;
x:=y;
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
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:
Uses
Type
Const
Crt;
mmc=Array[1..100] of Word;
fi='D:\Ntcn.Inp';
fo='D:\Ntcn.Out';
Var
i,n,m:Byte;
a:mmc;
f,g:Text;
Function Uc(x,y:Word):Boolean;
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;
Function Max(c:mmc;k:Byte):Word;
Var
i:Byte;
m:Word;
Begin
m:=a[1];
For i:=2 to k do
If m
m:=a[i];
Max:=m;
End;
Begin
Assign(f,fi);
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:
Uses
Const
Var
Crt;
fi='D:\Haiqua.Inp';
fo='D:\Haiqua.Out';
Type m2c=Array[1..100,1..100] of Word;
mmc=Array[1..100] of Word;
i,j,k,m,n,max:Byte;
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];
k:=1;
i:=1; j:=1;
fillchar(b,sizeof(b),0);
b[1]:=max;
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.