Tải bản đầy đủ (.doc) (42 trang)

Bai tap on thi HSG tin hoc

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (2.64 MB, 42 trang )

BÀI TẬP NÂNG CAO (Không bắt buộc)
KIỂU SỐ NGUYÊN (INTEGER):
Từ khai báo

Phạm vi biểu diễn

Kích thước
(Byte)

Ghi chú
(Giả sử x là
biến, ta chỉ cần
nhớ như sau)

Byte

0 .. 255

1

Shortint

-128 .. +127

1

Integer (Smallint)

-32768 .. 32767

2



Word

0 .. 65535

2

Longint

-2147483648.. 2147483647

4

|x| ≈ 2.109

Longword
(Cardinal)

0.. 4294967295

4

x ≈ 4.109

Int64

-9223372036854775808..
9223372036854775807

8


|x| ≈ 9.1018

Qword
0.. 18446744073709551615
8
KIỂU SỐ THỰC (REAL):
Từ khai báo
Phạm vi biểu diễn
Chữ số có nghĩa
REAL
2.9E-39 .. 1.7E+38
11-12
SINGLE
1.5E- 45 .. 3.4E+38
7-8
DOUBLE
5.0E-324 .. 1.7E+308
15-16
EXTENDED
3.4E- 4951 .. 1.1E+4932
19-20

x ≈ 18.1018
Kích thước (Byte)
6
4
8
10


Bài 1. Diện tích hình chữ nhật
Tên file chương trình RECTAREA.PAS
Viết chương trình tính diện tích hình chữ nhật có chiều dài là a, chiều rộng là b.
Dữ liệu: vào từ file RECTAREA.INP chứa 2 số nguyên dương a, b cách nhau một khoảng
trắng ( a,b ≤ 4.109 ).
Kết quả: ghi vào file RECTAREA.OUT kết quả là diện tích hình chữ nhật.
Ví dụ:
RECTAREA.INP
RECTAREA.OUT
53
15
Bài 2. Tính giá trị biểu thức P
Tên file chương trình EXP.PAS
1
1
1
1
+
+
+ ... +
Cho biểu thức: P =
.
1.3 3.5 5.7
(2n − 1).(2n + 1)
Yêu cầu: Tính giá trị của P với n cho trước.
Dữ liệu: Vào từ file EXP.INP chứa số nguyên dương n ( n ≤ 109 ).
Kết quả: Ghi ra file EXP.OUT giá trị của P với 10 chữ số thập phân.
Ví dụ:
EXP.INP
5


EXP.OUT
0.4545454545

Trang 1




Bài 3. Giá trị nhỏ nhất

Tên file chương trình MINVAL.PAS

9
Cho đa thức: ax 2 + bx + c ( 0 < a ≤ 100; b , c ≤ 10 ).

Viết chương trình tìm giá trị nhỏ nhất của đa thức trên với các hệ số a, b, c cho trước.
Dữ liệu vào từ file MINVAL.INP chứa 3 số nguyên a, b, c cách nhau một khoảng trắng.
Kết quả ghi vào file MINVAL.OUT giá trị nhỏ nhất của đa thức đã cho với 2 chữ số thập
phân.
Ví dụ:
MINVAL.INP

MINVAL.OUT

9 -48 65
1.00
Bài 4. Giao điểm của đường thẳng
Tên file chương trình INSPOINT.PAS
Cho n đường thẳng phân biệt cắt nhau từng đôi một, trong đó có đúng k đường thẳng đồng

quy. Tính số giao điểm của n đường thẳng đã cho.
Dữ liệu vào từ file INSPOINT.INP:
 Dòng đầu chứa số nguyên n ( 2 ≤ n ≤ 4.109 ).
 Dòng thứ hai chứa số nguyên k ( 2 ≤ n ≤ 4.109 ;k < n ).
Kết quả ghi vào file INSPOINT.OUT số các giao điểm tìm được.
Ví dụ:
INSPOINT.INP
101

INSPOINT.OUT
5041

5
Bài 5. Đa giác
Tên file chương trình POLYGON.PAS
Cho đa giác lồi có n cạnh. Tính tổng các góc trong và số đường chéo của đa giác đã cho.
Dữ liệu vào từ file POLYGON.INP chứa số nguyên n ( 3 ≤ n ≤ 109 ).
Kết quả ghi vào file POLYGON.OUT:
 Dòng thứ nhất ghi tổng các góc trong của đa giác đã cho (đơn vị tính theo độ).
 Dòng thứ hai ghi số đường chéo của đa giác đã cho.
Ví dụ:
POLYGON.INP
6

POLYGON.OUT
720
9

Trang 2





Bài 6. Tìm nghiệm của đa thức

Tên file chương trình XVALUE.PAS

Viết chương trình tìm nghiệm của đa thức ax + b.
Dữ liệu vào từ file XVALUE.INP:
 Dòng đầu chứa số nguyên n (0< n ≤ 100000).
 n dòng tiếp theo, mỗi dòng chứa 2 số thực a, b ( a , b ≤ 100 ).
Kết quả ghi vào file XVALUE.OUT nghiệm của đa thức ax + b với 2 chữ số thập phân.
Nếu đa thức có vô số nghiệm thì ghi “VSN”, nếu đa thức vô nghiệm thì ghi “VN”.
Ví dụ:
XVALUE.INP

XVALUE.OUT

3

- 1.50

23

VN

05

VSN


00
Bài 7. Tinh giá trị biểu thức S
Tên file chương trình EXP1.PAS
1 2 3 4
n −1
n
+
Cho biểu thức: S = − + − + ... −
.
3 5 7 9
(2n − 1) (2n + 1)
Yêu cầu: Tính giá trị của S với n cho trước.
Dữ liệu: Vào từ file EXP1.INP chứa số nguyên dương n ( n ≤ 109 ).
Kết quả: Ghi ra file EXP1.OUT giá trị của S với 9 chữ số thập phân.
Ví dụ:
EXP1.INP
3

EXP1.OUT
0.361904762

Bài 8. Bội chung nhỏ nhất
Tên file chương trình LCM.PAS
Cho cặp số nguyên dương a, b.
Yêu cầu: Tìm bội số chung nhỏ nhất của cặp số nguyên dương a, b.
Dữ liệu: Vào từ file LCM.INP:
 Dòng đầu chứa số nguyên dương n ( n ≤ 100 ).
 n dòng tiếp theo chứa n cặp số nguyên dương a, b cần xét ( a,b ≤ 32767 ), các giá trị
a, b cách nhau ít nhất một khoảng trắng.
Kết quả: Ghi ra file LCM.OUT n dòng, dòng thứ i ghi bội chung nhỏ nhất của cặp số a, b

tương ứng đã cho tại dòng thứ i+1 trong tệp LCM.INP.
Ví dụ:
LCM.INP
LCM.OUT
5
15
3 5
12
4 6
10
5 10
42
21 6
60
10 12

Trang 3




Bài 9. Phương trình nghiệm nguyên
Tên file chương trình INTEQUA.PAS
Xét phương trình có dạng x + y + z = n (x, y, z, n là các số nguyên dương).
Phương trình này có thể vô nghiệm, có một hoặc vô số bộ nghiệm (x, y, z) mà trong
đó các số x, y, z đều là số nguyên dương (x, y, z > 0).
Yêu cầu: Liệt kê ra tất cả các bộ nghiệm nguyên dương x, y, z của phương trình
trên (với x < y < z) và cho biết có tất cả bao nhiêu bộ nghiệm.
Dữ liệu: Vào từ file INTEQUA.INP chứa số nguyên dương n ( 0 < n ≤ 1000 ).
Kết quả: Ghi vào file INTEQUA.OUT các bộ nghiệm tìm được mỗi dòng ghi 1 bộ

nghiệm với các giá trị của x, y, z cách nhau ít nhất 1 dấu cách. Dòng cuối cùng ghi số
lượng các bộ nghiệm. Nếu không có bộ nghiệm nào thì ghi số 0.
Ví dụ:
INTEQUA.INP
INTEQUA.OUT
10
1 2 7
1 3 6
1 4 5
2 3 5
4
Bài 10. Giải phương trình
Tên file chương trình EQUTN.PAS
2
2
Cho phương trình x + y = z (*). Phương trình này có thể có vô số nghiệm nhưng chỉ xét
các các nghiệm có x, y, z là các số nguyên tố và x ≤ y ≤ z ≤ n với n cho trước.
Yêu cầu: Hãy viết chương trình tìm tất cả các nghiệm của (*).
Dữ liệu: Vào từ file ‘EQUTN.INP’, chứa duy nhất một số nguyên dương n ( 0 < n ≤ 109 )
Kết quả: Ghi ra file ‘EQUTN.OUT’:
 Mỗi dòng là một nghiệm theo thứ tự x, y, z.
 Dòng cuối cùng ghi tổng số nghiệm tìm được.
Ví dụ:
EQUTN.INP
20

EQUTN.OUT
2 3 13
1


Bài 11. Phân tích ra thừa số nguyên tố
Tên file chương trình PRIMEFAC.PAS
Cho một số nguyên dương n lớn hơn 1.
Yêu cầu: Hãy phân tích n thành tích các thừa số nguyên tố.
Dữ liệu: Vào từ file PRIMEFAC.INP chứa số nguyên dương n (1 < n ≤ 106 ).
Kết quả: Ghi ra file PRIMEFAC.OUT tích các thừa số nguyên tố phân tích được từ số
nguyên dương n, mỗi số nguyên tố cách nhau một dấu “.” (số cuối cùng không có dấu “.”).
Ví dụ:
PRIMEFAC.INP PRIMEFAC.OUT
300
2.2.3.5.5
Bài 12. Chữ số tận cùng
Tên file chương trình NUMFINAL.PAS
Cho hai số nguyên a và n.
Yêu cầu: Tìm chữ số tận cùng của a n .
Dữ liệu: Vào từ file NUMFINAL.INP chứa 2 số nguyên a, n cách nhau một khoảng trắng
( 0 < a ≤ 18.1018 ;0 ≤ b ≤ 18.1018 ).
Kết quả: Ghi ra file NUMFINAL.OUT chữ số tận cùng của a n .
Trang 4




Ví dụ:
NUMFINAL.INP
NUMFINAL.OUT
35
3
Bài 13. Chữ số tận cùng của số lớn
Tên file chương trình NUMFILON.PAS

Cho hai số nguyên a và n.
Yêu cầu: Tìm chữ số tận cùng của a n .
Dữ liệu: Vào từ file NUMFILON.INP chứa 2 số nguyên a, n cách nhau một khoảng trắng
( 0 < a ≤ 10100 ;0 ≤ b ≤ 10100 ).
Kết quả: Ghi ra file NUMFILON.OUT chữ số tận cùng của a n .
Ví dụ:
NUMFILON.INP
NUMFILON.OUT
35
3
Bài 14. Đếm số chữ số 0 tận cùng của n!
Tên file chương trình NUMBER0.PAS
Cho số nguyên dương n.
Yêu cầu: Hãy đếm số chữ số 0 tận cùng của n!.
Dữ liệu: Vào từ file NUMBER0.INP chứa số nguyên dương n ( n ≤ 1018 ).
Kết quả: Ghi ra file NUMBER0.OUT một số nguyên duy nhất là số lượng chữ số 0 tận
cùng của n!.
Ví dụ:
NUMBER0.INP
NUMBER0.OUT
5
1
Bài 15. Số “hồi văn”
Tên file chương trình NUMBER1.PAS
Số “hồi văn” là số mà khi đọc xuôi, đọc ngược đều giống nhau (số có 1 chữ số cũng được
coi là số “hồi văn”). Ví dụ: số 3663 là là một số “hồi văn”.
Yêu cầu: Cho n số nguyên dương a1;a 2 ;a 3 ;...;a n . Hãy cho biết trong n số đã cho có bao
nhiêu số “hồi văn”?
Dữ liệu: Vào từ file NUMBER1.INP:
 Dòng đầu là số nguyên dương n ( n ≤ 105 ).

 n dòng tiếp theo, dòng thứ i là số nguyên dương a i ( i = 1,2,3,...,n;a i ≤ 1018 ).
Kết quả: Ghi ra file NUMBER1.OUT một số nguyên duy nhất là số lượng số “hồi văn”
trong n số đã cho.
Ví dụ:
NUMBER1.INP
NUMBER1.OUT
5
3
3
545
7272
3663
12345
Bài 16. Mật khẩu bí ẩn
Tên file chương trình PASSWORD.PAS
Bạn An là một người rất đam mê lập trình nên thường xuyên tham gia thi lập trình trên
mạng. Vì đạt được thành tích cao nên An được Ban tổ chức gửi tặng một phần mềm học
Trang 5




toán khá hấp dẫn. Nhà sản xuất phần mềm cung cấp cho An một mã số là một số nguyên
dương M có không quá 255 chữ số. Để cài đặt được phần mềm, An phải nhập vào mật
khẩu của phần mềm.
Mật khẩu của phần mềm là một số nguyên dương P được tạo ra bằng cách tính tổng giá trị
các chữ số của số M.
Trong vai trò là An em hãy viết chương trình để tìm ra mật khẩu P bí ẩn từ số M đã cho.
Yêu cầu: Hãy tìm số nguyên dương P.
Dữ liệu: Vào từ file PASSWORD.INP chứa số M có tối đa 255 chữ số viết liền nhau.

Kết quả: Ghi ra file PASSWORD.OUT số nguyên dương P tìm được.
Ví dụ:
PASSWORD.INP PASSWORD.OUT
84915388247
59
Bài 17. Tổng các số
Tên file chương trình SUM.PAS
Cho số nguyên dương n. Bằng cách sử dụng các số liên tiếp của n (viết trong hệ thập
phân), ta thu được các số nguyên (có thể trùng nhau).
Ví dụ: n = 2014, ta thu được các số: 2, 0, 1, 4, 20, 01, 14, 201, 014, 2014.
Yêu cầu: Hãy tính tổng các số thu được. Trong ví dụ trên, ta có tổng cần tìm sẽ là:
2 + 0 + 1 + 4 + 20 + 01 + 14 + 201 + 014 + 2014 = 2271
Dữ liệu: Vào từ file SUM.INP chứa duy nhất một số nguyên dương n (102 ≤ n ≤ 109 ).
Kết quả: Ghi ra file văn bản SUM.OUT tổng cần tìm.
Ví dụ:
SUM.INP
SUM.OUT
2014
2271
Bài 18. Tìm số k
Tên file chương trình SEARCHK.PAS
Cho hai số nguyên dương n và m, trong đó m là số nguyên tố.
Yêu cầu: Hãy tìm số nguyên dương k lớn nhất thỏa mãn điều kiện n! chia hết cho m k .
Dữ liệu: Vào từ file SEARCHK.INP:
 Dòng đầu là số nguyên dương n ( n ≤ 109 ).
 Dòng thứ hai là số nguyên tố m ( m ≤ 105 ).
Kết quả: Ghi ra file SEARCHK.OUT số k tìm được.
Ví dụ:
SEARCHK.INP
SEARCHK.OUT

7
2
3
Bài 19. Tổng chẵn
Tên file chương trình SUMEVEN.PAS
Cho dãy số nguyên gồm n phần tử a1;a 2 ;a 3 ;...;a n . Người ta chọn trong dãy ra hai phần tử
a i và a j ( i = 1,2,3,...,n; j = 1,2,3,...,n;i < j ) để tạo thành một cặp số ( a i ;a j ).
Yêu cầu: Hãy cho biết trong dãy có bao nhiêu cặp số (được chọn như trên) có tổng là một
số chẵn.
Dữ liệu: Vào từ file SUMEVEN.INP:
 Dòng đầu là số nguyên dương n ( n ≤ 106 ).
18
 n dòng tiếp theo, dòng thứ i là phần tử a i ( i = 1,2,3,...,n; a i ≤ 10 ).
Kết quả: Ghi ra file SUMEVEN.OUT số lượng cặp số có tổng là số chẵn.
Trang 6




Ví dụ:
SUMEVEN.INP
5
8
3
5
4
7

SUMEVEN.OUT
4


Bài 20. Cặp số trung hòa
Tên file chương trình NEUTRAL.PAS
Cho hai dãy số nguyên a1;a 2 ;a 3 ;...;a n và b1;b 2 ;b3 ;...;b m . Một cặp số ( a i ;b j ) được gọi là
trung hòa nếu chúng thỏa mãn các điều kiện sau:
 a i được chọn trong các số nguyên a1;a 2 ;a 3 ;...;a n ( i = 1,2,3,...,n ).
 b j được chọn trong các số nguyên b1;b 2 ;b3 ;...;b m ( j = 1,2,3,...,m ).
 aib j < 0 .
Yêu cầu: Hãy cho biết có bao nhiêu cách chọn được cặp số trung hòa.
Dữ liệu: Vào từ file NEUTRAL.INP:
 Dòng thứ nhất theo thứ tự chứa hai số nguyên dương n, m ( n,m ≤ 105 ).
9
 n dòng tiếp theo, dòng thứ i chứa số nguyên a i ( i = 1,2,3,...,n; a i ≤ 10 ).
9
 m dòng tiếp theo, dòng thứ j chứa số nguyên b j ( j = 1,2,3,..., m; b j ≤ 10 ).
Kết quả: Ghi ra file NEUTRAL.OUT một số nguyên duy nhất là số cách chọn được cặp
số trung hòa.
Ví dụ:
NEUTRAL.INP
NEUTRAL.OUT
43
4
3
-2
0
5
4
-1
3


Bài 21. Những sợi dây xích k
Tên file chương trình CHAINK.PAS
Có n sợi dây xích, sợi thứ i có a i mắt xích ( i = 1,2,3,...,n ). Những sợ dây xích k là những
sợi dây có 1k khoặc 2k hoặc 3k, … mắt xích, nếu sợi dây xích nào có nhiều hơn hoặc ít
hơn các con số mắt xích đó thì người ta có thể cắt bớt mắt xích đi hoặc nối thêm mắt xích
vào để tạo ra những sợi dây xích k.
Yêu cầu: Với n sợi dây xích đã cho, hãy cho biết sau khi tạo được toàn bộ những sợi dây
xích k thì còn bao nhiêu mắt xích không được dùng.
Dữ liệu: Vào từ file CHAINK.INP:
 Dòng thứ nhất theo thứ tự chứa hai số nguyên dương n, k ( n ≤ 106 ;k ≤ 1018 ).
 n dòng tiếp theo, dòng thứ i chứa số nguyên dương a i ( a i ≤ 1018 ;i = 1,2,3,...,n ).
Kết quả: Ghi ra file CHAINK.OUT một số nguyên duy nhất là số mắt xích còn lại không
được dùng.
Trang 7




Ví dụ:
CHAINK.INP
33
5
2
4

CHAINK.OUT
2

Bài 22. Phần dư
Tên file chương trình MOD.PAS

Cho hai số nguyên dương n và k.
Yêu cầu: Hãy tính n! mod k.
Dữ liệu:Vào từ file MOD.INP chứa hai số nguyên dương n và k ( n ≤ 106 ;k ≤ 109 ).
Kết quả: Ghi ra file MOD.OUT một số nguyên là kết quả của phép tính n trên.
Ví dụ:
MOD.INP
MOD.OUT
45
4
Bài 23. Phần dư 1
Tên file chương trình MOD1.PAS
Cho biểu thức S = 1 + 3 + 5 + ... + (2n − 1) và số nguyên dương k.
Yêu cầu: Hãy tính S mod k.
Dữ liệu: Vào từ file MOD1.INP chứa 2 số nguyên dương n và k ( n,k ≤ 1018 ).
Kết quả: Ghi ra file MOD1.OUT một số nguyên là kết quả của phép tính trên.
Ví dụ:
MOD1.INP
MOD1.OUT
57
4
Bài 24. Phần dư 2
Tên file chương trình MOD2.PAS
3
3
3
3
Cho biểu thức S = 1 + 2 + 3 + ... + n và số nguyên dương k.
Yêu cầu: Hãy tính S mod k.
Dữ liệu: Vào từ file MOD2.INP chứa 2 số nguyên dương n và k ( n,k ≤ 1018 ).
Kết quả: Ghi ra file MOD2.OUT một số nguyên là kết quả của phép tính trên.

Ví dụ:
MOD2.INP
MOD2.OUT
5 200
25
Bài 25. Phần dư 3
Tên file chương trình MOD3.PAS
2
2
2
2
Cho biểu thức S = 1 + 2 + 3 + ... + n và số nguyên dương k.
Yêu cầu: Hãy tính S mod k.
Dữ liệu: Vào từ file MOD3.INP gồm nhiều dòng, mỗi dòng chứa 2 số nguyên dương n và
k ( n,k ≤ 1018 ).
Kết quả: Ghi ra file MOD3.OUT gồm nhiều dòng, mỗi dòng ghi một số nguyên là kết
quả của phép tính trên.
Ví dụ:
MOD3.INP
MOD3.OUT
6 90
1
3 10
4
5 45
10
Trang 8









Bài 26. Dãy số đặc biệt
Tên file chương trình SEQ1.PAS
Người ta gọi dãy số sau là một dãy số đặc biệt có n phần tử:
a1 = 1;a 2 = 1 + 3;a 3 = 1 + 3 + 5;...;a i = 1 + 3 + 5 + ... + (2i − 1);a n = 1 + 3 + 5 + ... + (2n − 1)
Yêu cầu: Cho một dãy số nguyên có n phần tử. Hãy cho biết sau khi sắp xếp lại, dãy số đã
cho có phải là dãy số đặc biệt không.
Dữ liệu: Vào từ file SEQ1.INP:
 Dòng đầu là số nguyên dương n ( n ≤ 106 ).
18
 n dòng tiếp theo, dòng thứ i là phần tử a i ( i = 1,2,3,...,n; a i ≤ 10 ).
Kết quả: Ghi ra file SEQ1.OUT: nếu dãy đã cho là dãy số đặc biệt thì mỗi dòng ghi 1
phần tử của dãy sau khi đã sắp xếp tăng, nếu dãy đã cho không phải là dãy số đặc biệt thì
ghi số 0.
Ví dụ:
SEQ1.INP
SEQ1.OUT
SEQ1.INP
SEQ1.OUT
3
1
3
0
9
4
7

1
9
1
4
4
Bài 27. Dãy số có tổng vị thứ
Tên file chương trình SEQ2.PAS
Một dãy số a1;a 2 ;a 3 ;...;a n được gọi là dãy số có tổng vị thứ nếu a i = 1 + 2 + 3 + ... + i (với
i = 1,2,3,...,i ).
Yêu cầu: Cho một dãy số nguyên có n phần tử. Hãy cho biết sau khi sắp xếp lại, dãy số đã
cho có phải là dãy số có tổng vị thứ không.
Dữ liệu: Vào từ file SEQ2.INP:
 Dòng đầu là số nguyên dương n ( n ≤ 50000 ).
9
 n dòng tiếp theo, dòng thứ i là phần tử a i ( i = 1,2,3,...,n; a i ≤ 2.10 ).
Kết quả: Ghi ra file SEQ2.OUT:
 Ghi số 0 nếu không phải là dãy vị thứ.
 Ghi số 1 nếu dãy đã cho là dãy vị thứ, n dòng tiếp theo mỗi dòng là một phần tử của
dãy vị thứ đã cho sau khi sắp xếp giảm.
Ví dụ:
SEQ2.INP
SEQ2.OUT
SEQ2.INP
SEQ2.OUT
4
1
4
0
3
10

3
10
6
10
6
3
7
1
1
1
Bài 28. Đoạn con tăng dài nhất
Tên file chương trình SUBSEG1.PAS
Cho một dãy gồm n số nguyên a1 ,a 2 ,a 3 ,...,a n .
Yêu cầu: Hãy tìm đoạn con tăng dài nhất gồm các phần tử liên tiếp của dãy đã cho.
Dữ liệu: Vào từ file SUBSEG1.INP gồm 2 dòng:
 Dòng đầu là số nguyên dương n ( n ≤ 106 ).
Trang 9




 Dòng thứ hai là các phần tử a i của dãy, mỗi phần tử cách nhau 1 khoảng trắng (
i = 1,2,3,...,n; a i ≤ 2.1018 ).
Kết quả: Ghi ra file SUBSEG1.OUT một số nguyên duy nhất là số lượng phần tử của
đoạn con tìm được.
Ví dụ:
SUBSEG1.INP
SUBSEG1.OUT
6
3

3 2 5 6 4 9
Bài tập bổ sung: Tên file chương trình SUBSEG1R.PAS
Yêu cầu tương tự như trên, chỉ thay đổi file output như sau:
Kết quả: Ghi ra file SUBSEG1.OUT:
 Dòng đầu ghi một số nguyên duy nhất là số lượng phần tử của đoạn con tìm được.
 Dòng thứ hai ghi các phần tử của đoạn con tìm được, mỗi phần tử cách nhau 1
khoảng trắng.
Ví dụ:
SUBSEG1.INP
SUBSEG1.OUT
6
3
3 2 5 6 4 9
2 5 6
Bài 29. Đoạn con có tổng lớn nhất
Tên file chương trình SUBSEG2.PAS
Cho dãy gồm n số nguyên a1 ,a 2 ,a 3 ,...,a n .
Yêu cầu: Hãy tìm đoạn con có tổng lớn nhất gồm các phần tử liên tiếp của dãy đã cho.
Dữ liệu: Vào từ file SUBSEG2.INP gồm 2 dòng:
 Dòng đầu là số nguyên dương n ( n ≤ 106 ).
 Dòng thứ hai là các phần tử a i của dãy, mỗi phần tử cách nhau 1 khoảng trắng (
i = 1,2,3,...,n; a i ≤ 2.109 ).
Kết quả: Ghi ra file SUBSEG2.OUT một số nguyên duy nhất là tổng các phần tử của
đoạn con tìm được.
Ví dụ:
SUBSEG2.INP
SUBSEG2.OUT
6
11
3 -4 5 6 -8 7

Bài tập bổ sung: Tên file chương trình SUBSEG2R.PAS
Yêu cầu tương tự như trên, chỉ thay đổi file output như sau:
Kết quả: Ghi ra file SUBSEG2.OUT:
 Dòng đầu tiên ghi vị trí phần tử đầu tiên của đoạn con tìm được.
 Dòng thứ hai ghi vị trí phần tử cuối cùng của đoạn con tìm được
 Dòng thứ ba ghi tổng các phần tử của đoạn con tìm được.
Ví dụ:
SUBSEG2.INP
SUBSEG2.OUT
6
3
3 -4 5 6 -8 7
4
11
Trang 10




Bài 30. Dãy con đơn điệu dài nhất
Tên file chương trình SUBSEQ1.PAS
Cho một dãy gồm n số nguyên a1 ,a 2 ,a 3 ,...,a n .
Yêu cầu: Hãy tìm dãy con tăng dài nhất gồm các phần tử (liên tiếp hoặc không liên tiếp)
của dãy đã cho.
Dữ liệu: Vào từ file SUBSEQ1.INP gồm 2 dòng:
 Dòng đầu là số nguyên dương n ( n ≤ 106 ).
 Dòng thứ 2 là các phần tử a i của dãy, mỗi phần tử cách nhau 1 khoảng trắng (
i = 1,2,3,...,n; a i ≤ 2.1018 ).
Kết quả: Ghi ra file SUBSEQ1.OUT một số nguyên duy nhất là số lượng phần tử của dãy
con tìm được.

Ví dụ:
SUBSEQ1.INP
SUBSEQ1.OUT
12
5
6 12 8 11 3 4 1 7 5 9 10 2
Bài tập bổ sung: Tên file chương trình SUBSEQ1R.PAS
Yêu cầu tương tự như trên, chỉ thay đổi file output như sau:
Kết quả: Ghi ra file SUBSEQ1.OUT gồm 2 dòng:
 Dòng đầu ghi một số nguyên duy nhất là số lượng phần tử của dãy con tìm được.
 Dòng thứ hai ghi các phần tử của dãy con tìm được, mỗi phần tử cách nhau 1
khoảng trắng.
Ví dụ:
SUBSEQ1.INP
SUBSEQ1.OUT
12
5
6 12 8 11 3 4 1 7 5 9 10 2
3 4 7 9 10
Bài 31. Dãy con không liên tiếp có tổng lớn nhất Tên
file
chương
trình
SUBSEQ2.PAS
Cho dãy gồm n số nguyên a1 ,a 2 ,a 3 ,...,a n .
Yêu cầu: Hãy tìm dãy con có tổng lớn nhất gồm các phần tử không liên tiếp của dãy đã
cho.
Dữ liệu: Vào từ file SUBSEQ2.INP:
 Dòng đầu là số nguyên dương n ( n ≤ 106 ).
9

 n dòng tiếp theo, dòng thứ i là phần tử a i ( i = 1,2,3,...,n; a i ≤ 2.10 ).
Kết quả: Ghi ra file SUBSEQ2.OUT một số nguyên duy nhất là tổng các phần tử của dãy
con tìm được.
Ví dụ:
SUBSEQ2.INP
SUBSEQ2.OUT
5
11
1
5
2
4
6
Bài tập bổ sung: Tên file chương trình SUBSEQ2R.PAS
Trang 11




Yêu cầu tương tự như trên, chỉ thay đổi file output như sau:
Kết quả: Ghi ra file SUBSEQ2.OUT:
 Dòng đầu tiên ghi tổng các phần tử của dãy con tìm được.
 Dòng thứ hai ghi các phần tử của dãy con tìm được, mỗi phần tử cách nhau 1
khoảng trắng.
Ví dụ:
SUBSEQ2.INP
SUBSEQ2.OUT
5
11
1

5 6
5
2
4
6
Bài 32. Số lần xuất hiện của ký tự
Tên file chương trình CHAR.PAS
Cho một chuỗi ký tự gồm các ký tự trong bảng mã ASCII.
Yêu cầu: Hãy cho biết mỗi ký tự trong chuỗi xuất hiện bao nhiêu lần.
Dữ liệu: Vào từ file CHAR.INP chứa chuỗi ký tự có độ dài tối đa 109 ký tự.
Kết quả: Ghi ra file CHAR.OUT: mỗi dòng ghi thông tin về một ký tự trong chuỗi (như
ví dụ).
Ví dụ:
CHAR.INP
CHAR.OUT
ababcada
a 4
b 2
c 1
d 1
Bài 33. So sánh số lớn
Tên file chương trình COMPARE.PAS
Cho hai số nguyên dương a và b có tối đa 200 chữ số.
Yêu cầu: Hãy so sánh hai số đã cho.
Dữ liệu: Vào từ file COMPARE.INP: dòng đầu chứa số a, dòng thứ hai chứa số b.
Kết quả: Ghi ra file COMPARE.OUT: a>b hoặc aVí dụ:
COMPARE.INP
COMPARE.OUT
3294

a>b
1234
Bài 34. Thập phân sang nhị phân
Tên file chương trình DECTOBIN.PAS
Cho số tự nhiên n ở hệ thập phân.
Yêu cầu: Hãy biểu diễn số n ở hệ nhị phân.
Dữ liệu: Vào từ file DECTOBIN.INP: mỗi dòng chứa một số tự nhiên n ở hệ thập phân (
n ≤ 1018 ).
Kết quả: Ghi ra file DECTOBIN.OUT mỗi dòng một số nhị phân tương ứng với số thập
phân ở file DECTOBIN.INP.
Ví dụ:
DECTOBIN.INP
DECTOBIN.OUT
79
1001111
Trang 12




24
29

11000
11101

Bài 35. Nhị phân sang thập phân
Tên file chương trình BINTODEC.PAS
Cho số tự nhiên n ở hệ nhị phân.
Yêu cầu: Hãy biểu diễn số n ở hệ thập phân.

Dữ liệu: Vào từ file BINTODEC.INP: mỗi dòng chứa một số tự nhiên n ở hệ nhị phân có
tối đa 32 chữ số.
Kết quả: Ghi ra file BINTODEC.OUT mỗi dòng một số thập phân tương ứng với số nhị
phân ở file BINTODEC.INP.
Ví dụ:
BINTODEC.INP
BINTODEC.OUT
1001111
79
11000
24
11101
29
Bài 36. Thập phân sang thập lục phân
Tên file chương trình DECTOHEX.PAS
Cho số tự nhiên n ở hệ thập phân.
Yêu cầu: Hãy biểu diễn số n ở hệ thập lục phân.
Dữ liệu: Vào từ file DECTOHEX.INP: mỗi dòng chứa một số tự nhiên n ở hệ thập phân (
n ≤ 1018 ).
Kết quả: Ghi ra file DECTOHEX.OUT mỗi dòng một số thập lục phân tương ứng với số
thập phân ở file DECTOHEX.INP.
Ví dụ:
DECTOHEX.INP DECTOHEX.OUT
79
4F
2748
ABC
29
1D
Bài 37. Thập lục phân sang thập phân

Tên file chương trình HEXTODEC.PAS
Cho số tự nhiên n ở hệ thập lục phân.
Yêu cầu: Hãy biểu diễn số n ở hệ thập phân.
Dữ liệu: Vào từ file HEXTODEC.INP: mỗi dòng chứa một số tự nhiên n ở hệ thập lục
phân có tối đa 16 chữ số.
Kết quả: Ghi ra file HEXTODEC.OUT mỗi dòng một số thập phân tương ứng với số thập
lục phân ở file HEXTODEC.INP.
Ví dụ:
HEXTODEC.INP HEXTODEC.OUT
4F
79
ABC
2748
1D
29
Bài 38. Cụm ngoặc đúng
Tên file chương trình BRACKET.PAS
Cho một xâu S chỉ gồm các ký tự “(” và “)”.
Xâu S được gọi là xâu hợp lệ nếu một dấu ngoặc “(” bất kỳ luôn tồn tại một dấu ngoặc “)”
tương ứng với nó và ngược lại.
Yêu cầu: Hãy cho biết xâu S có hợp lệ hay không.
Trang 13




Dữ liệu: Vào từ file BRACKET.INP chứa xâu S có độ dài tối đa 109 ký tự.
Kết quả: Ghi ra file BRACKET.OUT số 1 hoặc 0 tương ứng với hợp lệ hoặc không hợp
lệ.
Ví dụ:

BRACKET.INP BRACKET.OUT
BRACKET.INP BRACKET.OUT
(()(()))
1
(()())))(
0
Bài 39. Giao lưu
Tên file chương trình MEET.PAS
Trong một ngày nghỉ Tết nguyên đán, trường THCS XYZ tổ chức một cuộc gặp gỡ giao
lưu giữa các cựu học sinh và các em học sinh trong đội tuyển học sinh giỏi của trường.
Tuy nhiên, do tổ chức vào dịp Tết nên mặc dù các em cũng rất hào hứng tham gia nhưng
thời gian rảnh rỗi của các em là không thống nhất. Trước tình hình đó, để phục vụ cho
cuộc gặp gỡ giao lưu, nhà trường quyết định mở cửa suốt cả ngày. Sau khi kết thúc một
ngày giao lưu, nhà trường muốn biết một thông tin quan trọng đó là số lượng học sinh
nhiều nhất tại cùng một thời điểm là bao nhiêu? Rất may là người bảo vệ của trường đã
cẩn thận ghi chép đầy đủ thông tin vào – ra cổng trường của các học sinh trong ngày đó
vào một cuốn sổ tay theo trình tự thời gian, cứ một học sinh đi từ ngoài vào thì ghi dấu
“+” (dấu cộng), một học sinh từ trong trường đi ra ngoài thì ghi dấu “-” (dấu trừ). Điều
đương nhiên là sau khi kết thúc cuộc giao lưu sẽ không còn học sinh nào ở lại trong
trường và không thể trong một thời điểm nào đó không có học sinh nào trong trường mà
lại có học sinh đi ra khỏi trường.
Yêu cầu: Hãy cho biết số học sinh cùng có mặt trong trường nhiều nhất là bao nhiêu?
Dữ liệu: Vào từ file MEET.INP chứa thông tin vào – ra của học sinh là một xâu ký tự có
độ dài tối đa 109 ký tự chỉ bao gồm dấu “+” hoặc “-”.
Kết quả: Ghi ra file MEET.OUT một số nguyên duy nhất là số lượng học sinh cùng có
mặt trong trường nhiều nhất. Trong trường hợp dữ liệu file MEET.INP không hợp lệ thì
ghi -1.
Ví dụ:
MEET.INP
MEET.OUT

MEET.INP
MEET.OUT
+-++-2
+-++---1
Bài 40. Hình chữ nhật
Tên file chương trình RECT.PAS
Trên mặt phẳng tọa độ Oxy cho n điểm có tọa độ nguyên
A1 (x1 , y1 );A 2 (x 2 , y 2 );...;A n (x n , y n ) .
Yêu cầu: Hãy tìm hình chữ nhật có các
cạnh song song với 2 trục tọa độ có diện
tích nhỏ nhất bao n điểm đã cho (điểm có
thể nằm trên cạnh của hình chữ nhật).
Dữ liệu: Vào từ file RECT.INP:
 Dòng đầu là số nguyên dương n (
n ≤ 106 ).
 n dòng tiếp theo, mỗi dòng là 2 số
nguyên tương ứng là hoành độ và
tung độ của 1 điểm cách nhau 1
khoảng trắng (phạm vi mỗi số từ
−109 đến 109 ).
Trang 14




Kết quả: Ghi ra file RECT.OUT thông tin của hình chữ nhật tìm được gồm 2 dòng:
 Dòng đầu ghi 2 số nguyên tương ứng là hoành độ và tung độ của đỉnh góc trái dưới
hình chữ nhật, mỗi số cách nhau 1 khoảng trắng.
 Dòng thứ hai ghi 2 số nguyên tương ứng là hoành độ và tung độ của đỉnh góc phải
trên hình chữ nhật, mỗi số cách nhau 1 khoảng trắng.

Ví dụ:
RECT.INP
RECT.OUT
5
-2 -2
0 0
3 1
1 1
3 -2
-2 -1
2 -1
Bài 41. Diện tích hình chữ nhật
Tên file chương trình SRECT.PAS
Trên mặt phẳng tọa độ Oxy cho n điểm,
điểm thứ i có tọa độ (x i , yi ) .
Yêu cầu: Hãy tính diện tích hình chữ nhật
nhỏ nhất có các cạnh song song với 2 trục
tọa độ bao cả n điểm đã cho. Biết rẳng các
điểm đã cho có thể nằm trên cạnh của hình
chữ nhật tìm được.
Dữ liệu: Vào từ file SRECT.INP:
 Dòng đầu là số nguyên dương n (
n ≤ 105 ).
 n dòng tiếp theo, dòng thứ i chứa tọa
độ của điểm thứ i gồm 2 số x i và yi
9
( i = 1,2,3,...,n; x i , yi ≤ 10 )
Kết quả: Ghi ra file SRECT.OUT diện tích
hình chữ nhật tìm được.
Ví dụ:

SRECT.INP
SRECT.OUT
5
20
2 6
3 5
1 3
6 2
5 4
Bài 42. Số âm lớn nhất
Tên file chương trình NEGAMAX.PAS
Cho một dãy số nguyên a1;a 2 ;a 3 ;...;a n .
Yêu cầu: Hãy xác định số âm lớn nhất trong dãy số đã cho.
Dữ liệu: Vào từ file NEGAMAX.INP gồm 2 dòng:
 Dòng đầu là số nguyên dương n ( n ≤ 106 ).
 Dòng thứ 2 là các phần tử a i của dãy, mỗi phần tử cách nhau 1 khoảng trắng (
i = 1,2,3,...,n; a i ≤ 2.109 ).
Trang 15




Kết quả: Ghi ra file NEGAMAX.OUT số âm lớn nhất tìm được. Trong trường hợp không
có số âm lớn nhất thì ghi số 0.
Ví dụ:
NEGAMAX.INP
NEGAMAX.OUT
6
-4
3 -4 5 6 -8 7

Bài 43. Số nguyên tố lớn nhất
Tên file chương trình MAXPRIME.PAS
Cho số nguyên dương k.
Yêu cầu: Hãy tìm số nguyên tố lớn nhất không vượt quá k.
Dữ liệu: Vào từ file MAXPRIME.INP chứa số nguyên dương k ( k ≤ 1018 ).
Kết quả: Ghi ra file MAXPRIME.OUT số nguyên tố lớn nhất tìm được. Trong trường
hợp không có kết quả thì ghi số 1.
Ví dụ:
MAXPRIME.INP MAXPRIME.OUT
10
7
Bài 44. Số nguyên tố
Tên file chương trình PRIME.PAS
Cho n số nguyên dương a1;a 2 ;a 3 ;...;a n .
Yêu cầu: Hãy cho biết trong n số đã cho có bao nhiêu số nguyên tố?
Dữ liệu: Vào từ file PRIME.INP:
 Dòng đầu là số nguyên dương n ( n ≤ 105 ).
 n dòng tiếp theo, dòng thứ i là số nguyên dương a i ( i = 1,2,3,...,n;a i ≤ 106 ).
Kết quả: Ghi ra file PRIME.OUT một số nguyên duy nhất là số lượng số nguyên tố trong
n số đã cho.
Ví dụ:
PRIME.INP
PRIME.OUT
5
3
6
3
2
4
7

Bài 45. Tổng của các phân số

Tên file chương trình SUMFRACT.PAS
1 1 1
1
Cho một dãy số nguyên dương a1;a 2 ;a 3 ;...;a n và biểu thức S = + + + ... + .
a1 a 2 a 3
an
Yêu cầu: Hãy tính giá trị của S với kết quả là một phân số tối giản.
Dữ liệu: Vào từ file SUMFRACT.INP:
 Dòng thứ nhất là số nguyên dương n ( n ≤ 100 ).
 Dòng thứ hai là các phần tử của dãy (phạm vi mỗi phần tử có giá trị từ 1 đến 100).
Kết quả: Ghi ra file SUMFRACT.OUT:
 Dòng thứ nhất ghi tử số của phân số tìm được.
 Dòng thứ hai ghi mẫu số của phân số tìm được.
Ví dụ:
Trang 16




SUMFRACT.INP
2
1 2

SUMFRACT.OUT
3
2

Bài 46. Kết quả phép tính

a .a .a .....a n
Cho phân thức 1 2 3
(với k ≠ 0 ).
k

Tên file chương trình RESCAL.PAS

Yêu cầu: Với n số nguyên dương a1;a 2 ;a 3 ;...;a n và số nguyên dương k, hãy cho biết sau
khi thực hiện giản ước thì giá trị mẫu số còn lại là bao nhiêu?
Dữ liệu: Vào từ file RESCAL.INP:
 Dòng thứ nhất chứa lần lượt hai số nguyên dương n và k cách nhau một khoảng
trắng ( n ≤ 106 ;k ≤ 109 ).
 n dòng tiếp theo, dòng thứ i chứa số nguyên dương a i ( i = 1,2,3,...,n;a i ≤ 109 ).
Kết quả: Ghi ra file RESCAL.OUT giá trị của mẫu số sau khi thực hiện giản ước.
Ví dụ:
RESCAL.INP
RESCAL.OUT
3 15
5
6
7
2
Bài 47. Tích lớn nhất của hai số
Tên file chương trình MULMAX.PAS
Cho một dãy n số nguyên a1;a 2 ;a 3 ;...;a n . Người ta chọn trong dãy số đó ra hai phần tử a i
và a j ( i = 1,2,3,...,n; j = 1,2,3,...,n;i ≠ j ). Gọi T là tích của a i và a j .
Yêu cầu: Hãy cho biết giá trị lớn nhất của T.
Dữ liệu: Vào từ file MULMAX.INP:
 Dòng đầu là số nguyên dương n ( n ≤ 104 ).
9

 n dòng tiếp theo, dòng thứ i là số nguyên a i ( i = 1,2,3,...,n; a i ≤ 10 ).
Kết quả: Ghi ra file MULMAX.OUT một số nguyên duy nhất là giá trị lớn nhất của T.
Ví dụ:
MULMAX.INP
MULMAX.OUT
4
21
3
2
-4
7
Bài tập bổ sung: Tên file chương trình MULMAXU.PAS
Yêu cầu tương tự như trên, nhưng không đọc – ghi file mà sử dụng Unit.
Hướng dẫn gọi hàm và thủ tục:
- Bạn được cung cấp số tiền là T (đồng) để gọi các hàm, thủ tục thư viện có sẵn
(MulmaxUnit.ppu). Nếu số tiền còn lại không đủ để gọi hàm, việc gọi hàm sẽ không có
kết quả như mong đợi.
- Để sử dụng thư viện này, dòng đầu tiên của chương trình bạn dùng câu lệnh:
Uses MulmaxUnit;
Trang 17




- Bạn phải chép file “Mulmax.inp” vào thư mục hiện hành (thư mục làm bài) và chép thư
mục “MulmaxUnit” vào đường dẫn “C:\FPC\2.4.4\units\i386-win32” (hoặc chép 2 file
“MulmaxUnit.ppu” và “MulmaxUnit.o” vào “C:\FPC\2.4.4\bin\i386-win32”).
Các hàm và thủ tục được cung cấp như sau:
1. Function GetN() : longint;
- Sử dụng hàm này bạn không mất tiền.

- Hàm trả về kết quả là số lượng các phần tử của dãy số.
2. Function Get(i:longint) : longint;
T
- Sử dụng hàm này bạn mất   số tiền.
 2n 
- Hàm trả về kết quả là giá trị của số thứ i trong dãy số ban đầu.
3. Function Mul(i,j:longint) : int64;
T
- Sử dụng hàm này bạn mất  2  số tiền.
n 
- Hàm trả về kết quả là tích của số thứ i và số thứ j trong dãy số ban đầu.
4. Procedure Swap(i, j);
T
- Sử dụng thủ tục này bạn mất  2  số tiền.
n 
- Thủ tục sẽ hoán đổi giá trị số thứ i và số thứ j trong dãy số ban đầu.
5. Procedure Send(t : int64);
- Thủ tục này chỉ được dùng 1 lần.
- Sử dụng thủ tục này bạn không mất tiền, nếu không sử dụng thủ tục này bạn sẽ mất hết
số tiền còn lại và không có điểm.
- Dùng thủ tục này để kết thúc bài làm và gửi kết quả tìm được thông qua biến t.
Xem kết quả:
- Kết quả của bạn sẽ được ghi vào file “Mulmax.out” trong thư mục hiện hành.
- Cách tính điểm như sau: Tổng điểm là 40 điểm gồm điểm kết quả và điểm thưởng.
+ Điểm kết quả: nếu bạn trả lời đúng bạn sẽ được 25 điểm, ngược lại thì không có điểm.
+ Điểm thưởng (ĐT): bạn được thưởng tối đa là 15 điểm về việc sử dụng tiết kiệm tiền.
 T .16 
Gọi số tiền còn lại của bạn là T1, khi đó cách tính điểm thưởng là: ĐT =  1  .
 T 
Bài 48. Tích lớn nhất của ba số

Tên file chương trình MULMAX3.PAS
Cho một dãy n số nguyên a1;a 2 ;a 3 ;...;a n . Người ta chọn trong dãy số đó ra ba phần tử a i ;
a j và a k ( i = 1,2,3,...,n; j = 1,2,3,...,n;k = 1,2,3,...,n;i ≠ j ≠ k ). Gọi T là tích của ba số a i ; a j
và a k .
Yêu cầu: Hãy cho biết giá trị lớn nhất của T.
Dữ liệu: Vào từ file MULMAX3.INP gồm 2 dòng:
 Dòng đầu là số nguyên dương n ( n ≤ 104 ).
6
 Dòng thứ 2 chứa dãy số nguyên a i ( i = 1,2,3,...,n; a i ≤ 10 ).
Kết quả: Ghi ra file MULMAX3.OUT một số nguyên duy nhất là giá trị lớn nhất của T.
Ví dụ:
MULMAX3.INP
MULMAX3.OUT
6
210
7 -2 4 -1 6 5
Trang 18




Bài tập bổ sung: Tên file chương trình MULMAX3U.PAS
Yêu cầu tương tự như trên, nhưng không đọc – ghi file mà sử dụng Unit.
Hướng dẫn gọi hàm và thủ tục:
- Bạn được cung cấp số tiền là T (đồng) để gọi các hàm, thủ tục thư viện có sẵn
(MulmaxUnit.ppu). Nếu số tiền còn lại không đủ để gọi hàm, việc gọi hàm sẽ không có
kết quả như mong đợi.
- Để sử dụng thư viện này, dòng đầu tiên của chương trình bạn dùng câu lệnh:
Uses Mulmax3Unit;
- Bạn phải chép file “Mulmax3.inp” vào thư mục hiện hành (thư mục làm bài) và chép

thư mục “Mulmax3Unit” vào đường dẫn “C:\FPC\2.4.4\units\i386-win32” (hoặc chép 2
file “Mulmax3Unit.ppu” và “Mulmax3Unit.o” vào “C:\FPC\2.4.4\bin\i386-win32”).
Các hàm và thủ tục được cung cấp như sau:
1. Function GetN() : longint;
- Sử dụng hàm này bạn không mất tiền.
- Hàm trả về kết quả là số lượng các phần tử của dãy số.
2. Function Get(i:longint) : longint;
- Sử dụng hàm này bạn mất T div N số tiền.
- Hàm trả về kết quả là giá trị của số thứ i trong dãy số ban đầu.
3. Function Mul(i,j,k:longint) : int64;
- Sử dụng hàm này bạn mất T div (4*N) số tiền.
- Hàm trả về kết quả là tích của là tích của ba số a i ; a j và a k trong dãy số ban đầu.
4. Function RemainMoney() : longint;
- Sử dụng hàm này bạn không mất tiền.
- Hàm trả về kết quả là số tiền còn lại của bạn tính đến thời điểm hiện tại.
5. Procedure Send(t : longint);
- Sử dụng thủ tục này bạn không mất tiền, nếu không sử dụng thủ tục này bạn sẽ mất hết
số tiền còn lại và không có điểm.
- Dùng thủ tục này để kết thúc bài làm và gửi kết quả tìm được thông qua biến t. Thủ tục
này chỉ được dùng 1 lần.
Xem kết quả:
- Kết quả của bạn sẽ được ghi vào file “Mulmax3.out” trong thư mục hiện hành.
- Bạn chỉ có điểm nếu tìm đúng kết quả và nếu:
+ Số tiền còn lại từ 75% trở lên đạt 40 điểm.
+ Số tiền còn lại từ 50% đến dưới 75% đạt 35 điểm.
+ Số tiền còn lại dưới 50% đạt 30 điểm.
Bài 49. Tìm vị trí đặt con mã
Tên file chương trình HORSE.PAS
Tọa độ của một con cờ trên bàn cờ 8×8 được xác định bằng một cặp



số (x;y), với x là tọa độ hàng tính từ trên xuống dưới và y là tọa độ


cột tính trái qua phải.
Một con mã có thể di chuyển đến 8 vị trí để ăn một quân cờ
Horse.a ni
(Hình1). Người ta nói con mã khống chế được một quân cờ nếu nó


có thể ăn được quân cờ đó bằng một nước đi.
Yêu cầu: Cho trước tọa độ của n quân tốt trên bàn cờ, hãy xác định


số lượng tối đa các con tốt mà một con mã có thể khống chế được.
Hình 1
Dữ liệu: Vào từ file HORSE.INP:
Hors e.ani

Trang 19




Dòng đầu gồm số n (0 n dòng tiếp theo, dòng thứ i chứa hai số nguyên x i ; yi cách
nhau 1 khoảng trắng (1 ≤ x i , yi ≤ 8 ) là tọa độ của con tốt thứ i.
Kết quả: Ghi ra file HORSE.OUT một số nguyên duy nhất, là số tối
đa các con tốt mà một vị trí đặt mã có thể khống chế được.








Hors e.ani

Horse.a ni



Ví dụ: (Hình 2)
HORSE.INP
4
2
2
3
4

HORSE.OUT

Hình 2

3
2
4
1
5


Bài 50. Sản xuất thiết bị
Tên file chương trình MANUEQUI.PAS
Trong quy trình sản xuất thiết bị của một nhà máy có sử dụng hai máy A và B, máy A sản
xuất ra n linh kiện (gọi tắt là linh kiện a) có thông số kỹ thuật a1;a 2 ;a 3 ;...;a n , máy B sản
xuất ra m linh kiện (gọi tắt là linh kiện b) có thông số kỹ thuật b1;b 2 ;b3 ;...;b m . Một thiết bị
được tạo ra là sự kết hợp của một linh kiện a và một linh kiện b và phải đảm bảo có tổng
thông số kỹ thuật là S. Giả thiết rằng các linh kiện do mỗi máy tạo ra đều có thông số kỹ
thuật khác nhau đôi một (không có hai linh kiện nào do một máy tạo ra có thông số kỹ
thuật giống nhau). Thông số kỹ thuật của mỗi linh kiện có thể là số âm.
Yêu cầu: Hãy cho biết với quy trình sản xuất như vậy thì có bao nhiêu thiết bị được tạo
ra?
Dữ liệu: Vào từ file MANUEQUI.INP:
 Dòng thứ nhất lần lượt chứa các số nguyên dương n, m và số nguyên S ( n,m ≤ 105 ;
S ≤ 2.109 ).
9
 n dòng tiếp theo, dòng thứ i chứa số nguyên a i ( i = 1,2,3,...,n; a i ≤ 2.10 ).
9
 m dòng tiếp theo, dòng thứ j chứa số nguyên b j ( j = 1,2,3,...,m; b j ≤ 2.10 ).
Kết quả: Ghi ra file MANUEQUI.OUT một số nguyên duy nhất là số lượng thiết bị được
tạo ra.
Ví dụ:
MANUEQUI.INP MANUEQUI.OUT
4 3 3
3
1
3
2
4
2
0

1

Bài 51. Xóa số
Tên file chương trình DELNUM.PAS
Một chương trình máy tính tạo ra một dãy số nguyên gồm n số a1;a 2 ;a 3 ;...;a n khác nhau
đôi một. Tuy nhiên, do một nguyên nhân nào đó (lỗi phần mềm hay do Virus) mà trong
Trang 20




dãy số được tạo ra không như mong muốn, có rất nhiều số được tạo ra bị lặp lại một số
lần. Nam là một người đam mê bộ môn tin học, Nam đã dùng chương trình tự viết của
mình xóa đi các số bị lặp lại nhiều lần để chỉ giữ lại một lần.
Yêu cầu: Với dãy số được tạo ra thì cần xóa đi ít nhất bao nhiêu phần tử để dãy số còn lại
có các phần tử đôi một khác nhau.
Dữ liệu: Vào từ file DELNUM.INP gồm 2 dòng:
 Dòng đầu là số nguyên dương n ( n ≤ 106 ).
9
 n dòng tiếp theo, dòng thứ i là số nguyên a i ( i = 1,2,3,...,n; a i ≤ 10 ).
Kết quả: Ghi ra file DELNUM.OUT một số nguyên duy nhất là số lượng số cần xóa ít
nhất.
Ví dụ:
DELNUM.INP
DELNUM.OUT
6
3
3
2
1

2
3
2
Bài 52. Xuất hiện nhiều nhất
Tên file chương trình APPMAX.PAS
Cho một dãy số nguyên có n phần tử a1;a 2 ;a 3 ;...;a n .
Yêu cầu: Hãy cho biết giá trị xuất hiện nhiều nhất trong dãy số đã cho là bao nhiêu lần?
Dữ liệu: Vào từ file APPMAX.INP gồm 2 dòng:
 Dòng đầu là số nguyên dương n ( n ≤ 106 ).
9
 n dòng tiếp theo, dòng thứ i là số nguyên a i ( i = 1,2,3,...,n; a i ≤ 10 ).
Kết quả: Ghi ra file APPMAX.OUT một số nguyên duy nhất là số lần xuất hiện của giá
trị xuất hiện nhiều nhất.
Ví dụ:
APPMAX.INP
APPMAX.OUT
5
3
2
5
2
1
2
Bài 53. Đếm số khác nhau
Tên file chương trình COUNT.PAS
Cho một dãy số nguyên có n phần tử a1;a 2 ;a 3 ;...;a n .
Yêu cầu: Hãy đếm xem có bao nhiêu giá trị khác nhau trong dãy số đã cho.
Dữ liệu: Vào từ file COUNT.INP:
 Dòng đầu là số nguyên dương n ( n ≤ 106 ).
9

 n dòng tiếp theo, dòng thứ i là số nguyên a i ( i = 1,2,3,...,n; a i ≤ 10 ).
Kết quả: Ghi ra file COUNT.OUT một số nguyên duy nhất là số các giá trị khác nhau
trong dãy số đã cho.
Trang 21




Ví dụ:
COUNT.INP
5
-3
2
-4
-3
2

COUNT.OUT
3

Bài 54. k giá trị lớn nhất
Tên file chương trình MAXK.PAS
Cho một dãy số nguyên dương có n phần tử a1;a 2 ;a 3 ;...;a n .
Yêu cầu: Hãy tìm k giá trị lớn nhất khác nhau trong dãy số trên.
Dữ liệu: Vào từ file MAXK.INP gồm 2 dòng:
 Dòng đầu chứa hai số nguyên dương n và k ( 2 ≤ k < n ≤ 105 ).
 n dòng tiếp theo, dòng thứ i là số nguyên a i ( i = 1,2,3,...,n;a i ≤ 109 ).
Kết quả: Ghi ra file MAXK.OUT gồm k dòng, dòng thứ i chứa giá trị lớn thứ i.
(Dữ liệu vào của bào toán luôn luôn có kết quả)
Ví dụ:

MAXK.INP
MAXK.OUT
6 3
7
4
5
2
4
7
5
4
7
Bài 55. Giá trị của biểu thức
Tên file chương trình EXPRE.PAS
Cho một dãy số gồm n số nguyên a 1; a2; a3; … ; an. Biết rằng trong các số đó không có hai
số bất kỳ nào giống nhau. Xét biểu thức:
S = a1 − x + a 2 − x + a 3 − x + ... + a n −1 − x + a n − x (với x là một số nguyên bất kỳ)
Yêu cầu: Hãy tìm giá trị nhỏ nhất của S.
Dữ liệu: Vào từ file EXPRE.INP:
 Dòng đầu là số nguyên dương n ( n ≤ 106 ).
9
 n dòng tiếp theo, dòng thứ i là số nguyên a i ( i = 1,2,3,...,n; a i ≤ 10 ).
Kết quả: Ghi ra file EXPRE.OUT một số nguyên duy nhất là giá trị nhỏ nhất của S.
Ví dụ:
EXPRE.INP
EXPRE.OUT
5
12
1
3

5
7
9

Trang 22




Bài 56. Cầu thang 1
Tên file chương trình STAIRS1.PAS
Một cầu thang có n bậc thang được đánh số từ 1 đến n. Một người đứng ở bậc thứ 0 (ở nền
nhà) muốn lên đến bậc thứ n mà chỉ có thể bước với số bước là 1 bậc hoặc 2 bậc.

Yêu cầu: Hãy cho biết có bao nhiêu cách đi từ bậc 0 đến bậc thứ n.
Dữ liệu: Vào từ file STAIRS1.INP gồm nhiều dòng, mỗi dòng một số nguyên dương n (
n ≤ 100 ).
Kết quả: Ghi ra file STAIRS1.OUT các kết quả tìm được ứng với mỗi số n đã cho (mỗi
kết quả ghi trên 1 dòng).
Ví dụ:
STAIRS1.INP
STAIRS1.OUT
2
2
8
24
Bài 57. Cầu thang 2
Tên file chương trình STAIRS2.PAS
Một cầu thang có n bậc thang được đánh số từ 1 đến n, trong đó có một số bậc bị hỏng
không thể bước vào. Một người đứng ở bậc thứ 0 (ở nền nhà) muốn lên đến bậc thứ n mà

chỉ có thể bước với số bước là 1 bậc hoặc 2 bậc.

Yêu cầu: Hãy cho biết có bao nhiêu cách đi từ bậc 0 đến bậc thứ n.
Dữ liệu: Vào từ file STAIRS2.INP gồm 2 dòng:
 Dòng đầu là số nguyên dương n ( n ≤ 100 ).
 Dòng thứ hai chứa n số 0 hoặc 1 biểu thị tương ứng 1 là bậc tốt, 0 là bậc hỏng.
Kết quả: Ghi ra file STAIRS2.OUT một số nguyên duy nhất là số cách đi từ bậc 0 đến
bậc thứ n.
Ví dụ:
STAIRS2.INP
STAIRS2.OUT
4
2
1 1 0 1
Bài 58. Đường viền trang trí
Tên file chương trình BORDER.PAS
Đường viền trang trí ở nền nhà có kích thước 2 × n được lát bằng 2 loại gạch: loại kích
thước 1 × 2 và loại kích thước 2 × 2 .
Trang 23




Yêu cầu: Hãy xác định số cách lát khác nhau có thể thực hiện.
Dữ liệu: Vào từ file BORDER.INP gồm nhiều dòng, mỗi dòng là một số nguyên dương n
( n ≤ 20 ).
Kết quả: Ghi ra file BORDER.OUT các kết quả tìm được ứng với mỗi số n đã cho (mỗi
kết quả ghi trên 1 dòng).
Ví dụ:
BORDER.INP

BORDER.OUT
2
3
8
171
12
2731
Bài 59. Hệ thống đèn
Tên file chương trình LIGHT.PAS
Một hệ thống đèn gồm n bóng đèn được bố trí trừ trái qua phải và được đánh số lần lượt từ
1 đến n. Mỗi bóng đèn có hai trạng thái tắt và mở. Người ta ký hiệu trạng thái tắt là 0 và
mở là 1. Bóng đèn ở vị trí đầu tiên (vị trí 1) luôn ở trạng thái mở.
Yêu cầu: Hãy cho biết có bao nhiêu trạng thái khác nhau của hệ thống đèn gồm n bóng
đèn thỏa mãn điều kiện sau:
 Bóng đèn ở vị trí đầu tiên luôn mở.
 Không tồn tại 2 bóng đèn mở bất kỳ liên tiếp nhau trong hệ thống.

Dữ liệu: Vào từ file LIGHT.INP gồm nhiều dòng, mỗi dòng là một số nguyên dương n (
n ≤ 92 ).
Kết quả: Ghi ra file LIGHT.OUT một số nguyên duy nhất là số trạng thái khác nhau của
hệ thống đèn .
Ví dụ:
LIGHT.INP
LIGHT.OUT
4
3
Bài 60. Đoạn số nguyên
Tên file chương trình SEGMINT.PAS
Trên trục x 'Ox cho n đoạn thẳng [ a1 ,b1 ] ;[ a 2 ,b3 ] ;[ a 3 ,b3 ] ;...; [ a n ,b n ] .
Yêu cầu: Hãy cho biết có thể chọn ra nhiều nhất bao nhiêu đoạn thẳng trong n đoạn thẳng

đã cho thỏa mãn điều kiện không đoạn nào cắt đoạn nào (hai đoạn bất kỳ được chọn
không có điểm chung).
Dữ liệu: Vào từ file SEGMINT.INP:
 Dòng đầu là số nguyên dương n ( n ≤ 103 ).
 n dòng tiếp theo, mỗi dòng chứa 2 số nguyên a i và bi cách nhau một khoảng trắng
9
( i = 1,2,3,...,n; a i , b i ≤ 10 ;a i < b i )
Kết quả: Ghi ra file SEGMINT.OUT một số nguyên duy nhất là số lượng đoạn thẳng
nhiều nhất chọn được.
Ví dụ:
Trang 24




SEGMINT.INP
5
2
3
6
1
4

SEGMINT.OUT
3

5
4
7
2

5

Bài 61. Cho thuê máy
Tên file chương trình RENTCOMP.PAS
Tại trung tâm tính toán có một máy tính hiệu năng cao nhận được n đơn đặt hàng của n
khách hàng (được đánh số từ 1 đến n). Khách hàng thứ i muốn sử dụng máy trong khoảng
thời gian từ a i đến bi và trả tiền thuê là ci .
Yêu cầu: Hãy bố trí lịch thuê máy để tổng số tiền thu được là lớn nhất mà thời gian sử
dụng máy của 2 khách hàng bất kì được phục vụ đều không giao nhau.
Dữ liệu: Vào từ file RENTCOMP.INP:
 Dòng đầu là số nguyên dương n ( n ≤ 105 ).
 n dòng tiếp theo, mỗi dòng chứa 3 số nguyên a i ; bi và ci cách nhau một khoảng
trắng (1 ≤ a i ,bi ,ci ≤ 105 )
Kết quả: Ghi ra file RENTCOMP.OUT một số nguyên duy nhất là tổng số tiền thu được
lớn nhất.
Ví dụ:
RENTCOMP.INP RENTCOMP.OUT
5
1000
1 2 100
5 6 300
3 4 200
7 8 400
8 10 100
Bài 62. Nối điểm
Tên file chương trình CONPOINT.PAS
Trên hai đường thẳng song song L1 và L 2 người ta thực hiện ghi các con số như sau: trên
đường thẳng L1 lần lượt có các con số a1;a 2 ;a 3 ;...;a n theo trình tự từ trái sang phải; trên
đường thẳng L 2 lần lượt có các con số b1;b 2 ;b3 ;...;b n cũng theo trình tự từ trái sang phải;
hai số đứng kế nhau trên mỗi đường thẳng luôn luôn được ghi rời nhau. Sau đó, người ta

lại thực hiện vẽ k đoạn thẳng d1;d 2 ;d 3 ;...;d k thỏa mãn những điều kiện sau:
 Một đoạn thẳng được tạo ra bằng cách nối một con số của đường thẳng L1 với một
con số của đường thẳng L 2 .
 Gọi a i1 và bi2 là hai con số được nối để tạo ra đoạn thẳng d i ; a j1 và b j2 là hai con
số được nối để tạo ra đoạn thẳng d j . Nếu i Trong k đoạn thẳng đó không có bất kỳ hai đoạn thẳng nào cắt nhau.
 Mỗi một con số chỉ là đầu mút của nhiều nhất một đoạn thẳng.
Yêu cầu: Hãy tìm giá trị lớn nhất của k.
Dữ liệu: Vào từ file CONPOINT.INP:
 Dòng thứ nhất chứa lần lượt các số nguyên dương n, m ( n,m ≤ 103 ).
9
 n dòng tiếp theo, dòng thứ i số nguyên a i ( a i ≤ 10 ;i = 1,2,3,...,n ).
Trang 25




Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×