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

Bài tập pascal cơ bản doc

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 (142.61 KB, 18 trang )

Bài tập cơ bản Tập I
Các bài tập cơ bản
Bài 1. Viết chơng trình nhập số nguyên dơng N<=1000 và N số nguyên A[1], . . .,
A[N]. Hãy thông báo ra màn hình các số sau:
- Giá trị lớn nhất của dãy và các chỉ số của các số hạng đạt giá trị lớn nhất.
- Giá trị nhỏ nhất của dãy và các chỉ số của các số hạng đạt giá trị nhỏ nhất.
- Giá trị lớn thứ nhì của dãy và các chỉ số của các số hạng đạt giá trị lớn nhì.
- Giá trị nhỏ thứ nhì của dãy và các chỉ số của các số hạng đạt giá trị nhỏ nhì.
- Dãy con gồm nhiều nhất các số hạng liên tiếp của dãy lập thành một cấp số cộng
- Dãy con gồm nhiều nhất các số hạng liên tiếp của dãy lập thành một dãy đơn điệu
- Dãy con gồm nhiều nhất các số hạng liên tiếp trái dấu nhau của dãy
- Dãy con gồm nhiều nhất các số hạng liên tiếp cùng dấu của dãy
Bài 2. Viết chơng trình nhập từ bàn phím hai số nguyên dơng M và N 10000 và
in ra màn hình ớc chung lớn nhất của hai số đó.
Bài 3. Viết chơng trình nhập từ bàn phím số nguyên dơng N 30000 và thông báo
ra màn hình N có là số nguyên tố hay không.
Bài 4. Viết chơng trình nhập từ bàn phím số nguyên dơng N 10000 và thông báo
ra màn hình các số K<=N có bằng tổng các ớc của nó và nhỏ hơn nó? (Số K thoả mãn
điều kiện trên đợc gọi là số hoàn thiện, ví dụ 6=1+2+3 là số hoàn thiện)
Bài 5. Nhập từ bàn phím số nguyên dơng N<=10000 và N số thực A1, . ., AN. Hãy
sắp xếp dãy đó theo thứ tự không giảm. Thông báo ra màn hình dãy đợc sắp xếp lại đó
và ghi rõ từng số hạng là số hạng nào của dãy cũ.
Bài 6. Có N gói kẹo, N<=200, các gói kẹo đợc đánh số từ 1 đến N, gói kẹo thứ i có
A[i] cái kẹo, các số a[1], . ., a[N] đều nguyên dơng và không quá 200. Hãy thông báo ra
màn hình một cách chia các gói kẹo làm hai nhóm sao cho tổng số kẹo trong các nhóm
sai khác nhau ít nhất.
Dữ liệu vào đợc cho bởi file INP.BL trong đó dòng thứ nhất ghi số N và trong các
dòng tiếp theo, mỗi dòng ghi 10 số lần lợt từ A[1] đến A[N].
Kết quả ghi ra file OUT.BL nh sau: dòng thứ nhất ghi số kẹo chênh lệch giữa hai
nhóm, tiếp theo là một nhóm dòng ghi số hiệu các gói kẹo thuộc nhóm thứ nhất, mỗi
dòng ghi 20 số hiệu, cuối cùng là một nhóm dòng ghi số hiệu các gói kẹo thuộc nhóm


thứ hai, mỗi dòng ghi 20 số hiệu.
Bài 7. Viết chơng trình nhập từ bàn phím bốn số nguyên dơng A, B, C, D,
1<=A<=31, 1<=B<=12, -2000<=C<=2000, 1<=D<=7. ý nghĩa của bốn số này là ngày
A tháng B năm C là ngày thứ D, trong đó 1 là chủ nhật, 2 là thứ hai, . ., 7 là ngày thứ
bảy. Nhập tiếp ba số nguyên dơng A1, B1, C1 thoả mãn các điều kiện tơng ứng nh đối
với A, B, C. Hãy thông báo ra màn hình ngày A1 tháng B1 năm C1 là ngày thứ mấy?
Biết rằng nếu năm chia hết cho 4, tháng 2 có 29 ngày, còn với các năm khác, tháng 2
chỉ có 28 ngày.
Bài 8. Cho một hình chữ nhật có các cạnh là các số nguyên dơng M, N, M và N
không quá 100. Hình chữ nhật đợc chia thành các ô vuông cạnh đơn vị bằng các đờng
song song với các cạnh, các ô này đợc đánh số nh sau: các dòng ô đánh số từ 1 đến M
từ dới lên trên, các cột ô đánh số từ 1 đến N từ trái sang phải, khi đó mỗi ô đợc đặc trng
bởi chỉ số dòng và chỉ số cột của nó. Hãy ghi ra màn hình các ô vuông có điểm chung
- 1
Bài tập cơ bản Tập I
với đờng chéo của hình chữ nhật đi từ góc trái trên của ô [1,1] đến góc phải dới của ô
[M,N].
Bài 9. Viết chơng trình nhập số nguyên dơng N<=1000 và dãy N số nguyên A[1], . .
., A[N]. Hãy xét xem dãy số đó có bao nhiêu giá trị khác nhau và mỗi giá trị đó là giá trị
của các số hạng nào của dãy.
Bài 10. Viết chơng trình nhập từ bàn phím hai số nguyên dơng M và N,
M,N<=10000. Hãy viết ra màn hình biểu diễn dới dạng số thập phân (nói chung là vô
hạn tuần hoàn) của phân số M/N tức là dạng
M/N = b
1
. .b
k
,c
1
. . . c

m
(d
1
. . d
r
)
Ví dụ nếu M=2, N=3, ta phải viết ra màn hình 0,(6).
Bài 11. Hãy tìm một cách biểu diễn các số lớn hàng trăm chữ số và thực hiện các
phép toán cộng và trừ.
Bài 12. Viết chơng trình nhập từ bàn phím hai số nguyên dơng M, N. Hãy tìm cách
thay các dấu ? trong biểu thức sau bởi các phép toán +, -, * sao cho giá trị của biểu thức
nhận đợc bằng N:
((((M?M)?M)?M)?M)
Nếu không có thể đợc, hãy thông báo là không thể đợc.
Bài 13. Viết chơng trình nhập một số thực dơng R và một số nguyên dơng MAX.
Hãy tìm trong số các phân số có dạng P/Q với Q<=MAX phân số gần số R nhất.
Bài 14. Viết chơng trình nhập số nguyên dơng N<=30000 và thông báo ra màn hình
số chữ số không tận cùng của N!.
Bài 15. Viết chơng trình nhập từ bàn phím hai xâu ký tự S1 và S2.
1. Thông báo ra màn hình độ dài của S1 và S2.
2. Hãy xét xem S1 có xuất hiện bao nhiêu lần trong S2 và xuất hiện tại những vị trí
nào?
3. Hãy xét xem liệu S2 có là ghép liên tiếp của một số lần xâu S1 không?
Bài 16. Viết chơng trình nhập từ bàn phím một ký tự và một xâu ký tự. Hãy thông
báo ra màn hình ký tự đó xuất hiện bao nhiêu lần trong xâu ký tự và tại những vị trí
nào?
Bài 17. Viết chơng trình nhập 5 số nguyên A
0
, A
1

, A
2
, A
3
, A
4
. Hãy thông báo ra
màn hình tìm mọi nghiệm nguyên của phơng trình
A
0
+A
1
X + A
1
X
2
+ A
3
X
3
+ A
4
X
4
= 0
Bài 18. Viết chơng trình nhập một xâu ký tự S chỉ gồm các chữ cái thờng. Hãy lập
xâu S1 nhận đợc từ S bằng cách sắp xếp lại các ký tự theo vần a, b, c, . . .
Ví dụ nếu S = 'xbaqp' thì S1 = 'abpqx'.
Bài 19. Viết chơng trình nhập 8 số thực X1, Y1, X2, Y2, X3, Y3, X4, Y4, tơng ứng
là toạ độ của bốn điểm A, B, C, D trong mặt phẳng toạ độ. Thông báo ra màn hình các

kết quả sau:
1. Ba điểm A, B, C có lập thành một tam giác không?
- 2
Bài tập cơ bản Tập I
2. Nếu ABC là một tam giác, hãy xét xem điểm D có nằm bên trong tam giác này
không?
Bài 20. Viết chơng trình nhập số nguyên dơng N<=1000 và dãy A gồm N số
nguyên dơng khác nhau từng đôi A[1], . ., A[N]. Hãy tìm một dãy B gồm nhiều số hạng
nhất (không nhất thiết là liên tiếp) của A sao cho với bất kỳ ba số hạng khác nhau X, Y,
Z của B, ta luôn có tổng X + Y + Z không lớn hơn tổng các số hạng còn lại của B.
Bài 21. Giả sử trong một phiên làm việc từ thời điểm 0 đến thời điểm T = 8640000,
một trung tâm tính toán phải thực hiện N chơng trình, chơng trình i thực hiện từ thời
điểm A[i] đến thời điểm B[i], 0<=A[i]<=B[i]<T.
1. Cho trớc một khoảng thời gian [P1,Q1]. Hãy xét xem liệu tại mọi thời điểm của
đoạn đó luôn có chơng trình chạy hay không?
2. Cho trớc một khoảng thời gian [R1,S1]. Hãy xét xem liệu tại mọi thời điểm của
đoạn đó luôn không có chơng trình chạy hay không?
3. Hãy tìm khoảng thời gian [P,Q] dài nhất sao cho tại mọi thời điểm của nó luôn có
chơng trình chạy.
4. Hãy tìm khoảng thời gian [R,S] dài nhất sao cho tại mọi thời điểm của nó đều
không có chơng trình chạy.
Dữ liệu vào đợc cho bởi file INP.BL trong đó dòng thứ nhất ghi số nguyên dơng N
<=200. Với 1<=i<=N, dòng thứ i+1 ghi hai số nguyên không âm A[i] và B[i]. Dòng thứ
N+2 ghi hai số nguyên không âm P1, Q1, P1<=Q1. Dòng thứ N+3 ghi hai số nguyên
không âm R1, S1, R1<=S1.
Kết quả ghi ra file OUT.BL: dòng thứ nhất ghi CO/KHONG tuỳ theo kết quả cụ thể;
dòng thứ hai ghi CO/KHONG tuỳ theo kết quả cụ thể; dòng thứ ba ghi hai số P,Q; dòng
thứ t ghi hai số R, S.
Bài 22. Viết chơng trình làm các việc sau:
1. Nhập một số nguyên dơng N<=1000 và dãy A gồm N số tự nhiên A[1], . ., A[N].

2. Tìm số tự nhiên nhỏ nhất không là tổng của một số số hạng của dãy A. Tổng này
có thể chỉ gồm một số hạng và nếu có nhiều hơn, các số hạng không nhất thiết liên tiếp
nhau nhng mỗi số hạng của dãy không xuất hiện quá một lần.
Bài 23. Cho một sân hình chữ nhật có kích thớc MxN đợc chia thành MxN ô vuông
bằng nhau bởi các đờng song song với các cạnh. Trên mỗi ô vuông có thể chôn hoặc
không chôn một quả mìn. Tình trạng của bãi mìn có thể đợc mô tả bởi một trong hai
cách sau:
Cách thứ nhất: Dùng một mảng MIN1[1 M,1 N] trong đó phần tử MIN1[i,j] = 1
hay 0 tuỳ theo ô [i,j] có mìn hay không.
Cách thứ hai: Mỗi ô của sân có nhiều nhất 8 ô khác nó kề cạnh với nó nh trong
hình vẽ sau
1 2 4 1 0 1 16 184 96
128 ô i,j 8 0 1 1 58 109 194
64 32 16 1 1 0 12 134 131
Hình 1 Hình 2 (bên trái: MIN1, bên phải: MIN2)
- 3
Bài tập cơ bản Tập I
Ta ứng các ô này với các số 1, 2, 4, 8, 16, 32, 64, 128 nh hình 1. Khi đó ta lập một
mảng MIN2[1 M,1 N] nh sau: MIN2[i,j] bằng tổng các số hạng có dạng X.Y trong đó
X là số ứng với một ô kề cạnh với nó, Y bằng 1 hay 0 tuỳ theo ô đó có hay không có
mìn, ô [i,j] có bao nhiêu ô kề cạnh thì tổng có bấy nhiêu số hạng. Trong hình 2 cho ví
dụ về cách lập mảng MIN2 ứng với tình trạng mìn cho bởi mảng MIN1.
Viết chơng trình làm các việc sau:
1. Đọc từ file MIN1.TXT mảng MIN1 cho biết tình trạng mìn theo cách thứ nhất,
trong đó dòng thứ nhất ghi hai số nguyên dơng M, N <=100, trong M dòng sau, dòng
thứ i ghi N số lần lợt là MIN1[i,1], . ., MIN1[i,N]. Ghi ra file MIN1-2.TXT mảng MIN2
thể hiện tình trạng mìn theo cách thứ hai, mỗi dòng của mảng MIN2 ghi thành một
dòng của file.
2. Đọc từ file MIN2.TXT mảng MIN2 cho biết tình trạng mìn theo cách thứ nhất,
trong đó dòng thứ nhất ghi hai số nguyên dơng M, N <=100, trong M dòng sau, dòng

thứ i ghi N số lần lợt là MIN2[i,1], . ., MIN2[i,N]. Ghi ra file MIN2-1.TXT mảng MIN1
thể hiện tình trạng mìn theo cách thứ hai, mỗi dòng của mảng MIN1 ghi thành một
dòng của file.
Bài 24.Viết chơng trình làm các việc sau:
1. Nhập từ bàn phím hai xâu ký tự S1 và S2.
2. Ta có thể dùng một trong ba loại phép biến đổi sau:
BD1: xoá một ký tự nào đó trong xâu,
BD2: thêm một ký tự nào đó vào một vị trí nào đó của xâu,
BD3: thay một ký tự nào đó trong xâu bằng một ký tự khác.
Hãy thông báo ra file OUT.TXT liệu có thể dùng một số phép biến đổi thuộc ba loại
trên để biến đổi S1 thành S2 không, quy cách thông báo nh sau: ví dụ S1 = ptsddf, S2 =
tsgldds, thì ta phải thông báo nh sau:
Biến đổi đợc
ptslddf - xoá p/1 => tslddf
tslddf - thêm g/3 => tsgdldf
tsgdldf - thay f/7/s => tsgldds
3. Trong trờng hợp biến đổi đợc, hãy tìm một cách biến đổi dùng ít phép biến đổi
nhất và thông báo tiếp vào file OUT.TXT theo quy cách nh trên.
Bài 25. Cho một bảng vuông cạnh dài N đơn vị, N nguyên dơng, 3<=N<=25. Bảng
đợc chia thành NxN ô vuông bằng nhau bằng các đờng song song với các cạnh.Trên
một số ô không nằm trên cạnh của bảng có đặt vật cản nhng bảng có mái che nên
không biết đợc vật cản nằm ở những ô nào. Ta có thể dùng một quả bóng lăn từ ngoài
vào bảng theo các dòng/cột của bảng. Khi đó diễn biến chuyển động của quả bóng nh
sau:
TH1. Nếu quả bóng gặp ô có vật cản, nó quay lại ngợc chiều.
TH2. Nếu quả bóng đi tiếp súc với một ô có vật cản, nó đổi hớng 90
o
theo hớng
vuông góc với cạnh tiếp súc ngay tại ô kề đỉnh với ô chứa vật cản. TH1 sẽ xẩy ra khi
đồng thời có cả TH1 và TH2.

TH3. Nếu quả bóng tiếp súc với hai ô có vật cản, nó sẽ quay lại ngợc chiều
Nhập từ file INP.BL1 số nguyên dơng N, 3<=N<=100 ghi ở dòng thứ nhất, trong N
dòng sau mỗi dòng ghi N số 0/1, dòng thứ i+1 là tình trạng các ô của dòng i của bảng
trong đó 1/0 tơng ứng là có/không có vật cản. Dòng thứ N+2 ghi một xâu ký tự có một
trong các dạng sau thể hiện cách lăn quả bóng vào bảng.
- D-U-1 (có nghĩa là bóng lăn vào dòng U theo hớng từ ô [U,1])
- D-U-N (có nghĩa là bóng lăn vào dòng U theo hớng từ ô [U,N])
- C-U-1 (có nghĩa là bóng lăn vào cột U theo hớng từ ô [1,U])
- C-U-N (có nghĩa là bóng lăn vào cột U theo hớng từ ô [N,U])
- 4
Bài tập cơ bản Tập I
In ra file OUT.BL1 dãy các ô liên tiếp của bảng trên hành trình của quả bóng, mỗi ô
ghi trên một dòng gồm hai số là số dòng và số cột của ô đó.
Ví dụ. Trong hình vẽ sau trong đó ô ghi chữ X là ô có vật cản.
1 2 3 4 5 6
1
2 X X
3 X
4
5 X X
6
Nếu xâu ký tự là C-4-6 thì hành trình của quả bóng sẽ là:
6 4
6 3
Nếu xâu ký tự là D-3-6 thì hành trình của quả bóng sẽ là
3 6
3 5
4 5
3 5
4 6

Bài 26. Cho một dãy N viên bi gồm 3 mầu xanh, trắng, đỏ xếp lẫn lộn. Bằng cách
đổi chỗ từng cặp viên bi cho nhau, hãy xếp lại dãy bi trên theo trình tự xanh trớc, trắng
giữa, đỏ sau. Yêu cầu cần dùng một số ít nhất phép đổi chỗ.
Dữ liệu vào đợc cho bởi file INP1.TXT. Dòng thứ nhất ghi số nguyên dơng
N<=1000. Trong N dòng tiếp theo, mỗi dòng ghi ở vị trí đầu tiên một ký tự thuộc ba
loại: X, T, D thể hiện dãy bi ban đầu.
Dữ liệu ra ghi vào file OUT1.TXT trong đó dòng thứ nhất ghi số lợng phép đổi chỗ
cần dùng. Trong những dòng tiếp theo, mỗi dòng ghi một phép đổi chỗ dới dạng hai số
p q
có nghĩa là đổi chỗ các viên bi ở hai vị trí p và q cho nhau. Trình tự viết các dòng là
trình tự các phép đổi chỗ đợc tiến hành.
Thời gian chạy chơng trình: 20 giây.
Ví dụ
INP1.TXT OUT1.TXT
9 4
T 1 3
T 4 7
- 5
Bài tập cơ bản Tập I
X 9 2
D 5 9
D
D
T
D
X
Bài 27. Tổng giám đốc một công ty muốn tổ chức một buổi liên hoan cho các đồng
nghiệp trong công ty. Mỗi cán bộ của công ty ngoại trừ tổng giám đốc đều có đúng một
cấp trên trực tiếp của mình. Cán bộ P đợc gọi là cấp trên của cán bộ Q nếu có một dãy
cán bộ P1, P2, . ., Pk, k>=2, sao cho P=P1, Pk=Q và với 1<=i<=k-1, Pi là cấp trên trực

tiếp của P
i+1
. Để cho mọi cán bộ đợc thoải mái, tổng giám đốc không muốn một cán bộ
bất kỳ nào ngồi cùng một bàn với cấp trên của mình. Hãy tính xem cần tối thiểu bao
nhiêu bàn dùng cho buổi liên hoan theo yêu cầu của TGĐ.
Dữ liệu vào đợc cho bởi file INP.TXT trong đó dòng thứ nhất ghi số nguyên dơng N
<=200 là số lợng toàn thể cán bộ của công ty, các cán bộ của công ty có tên từ 1 đến N,
TGĐ có tên 1 và không có cấp trên. Dòng thứ hai ghi số nguyên dơng K, 2 <= k <= 10,
là số ngời tối đa có thể ngồi trong một bàn (chú ý rằng khi xếp, không nhất thiết mọi
bàn phải đủ K ngời). Dòng thứ ba ghi N số trong đó số thứ nhất là số 0, số thứ i là tên
cấp trên trực tiếp của cán bộ i. Dữ liệu đúng nh mô tả.
Ghi ra file OUT.TXT số lợng M bàn cần dùng. Trong M dòng tiếp theo, dòng thứ i
ghi tên cán bộ ngồi bàn i.
Ví dụ
INP.TXT OUT.TXT
13 5
4
0 1 9 9 9 2 2 1 1 8 8 10
Thời gian chạy chơng trình: Không quá 30 giây.
Bài 28. Có N quả cầu với số hiệu là 1, 2, . . ., N, N<=200. Biết trọng lợng của quả
cầu 1 là M[1], của quả cầu N là M[N]. Có hằng số D sao cho với mọi i, 1<i<N, ta có
M[i] = d + (M[i-1]+M[i+1])/2
Nhập từ bàn phím năm số: N, J - nguyên dơng, 1<=J<=N, M[1], M[N], D - ba số
thực. Thông báo ra màn hình khối lợng M[J] của quả cầu J.
Bài 29. Có N lá Bài với các số hiệu 1, 2, . . ., N, N<=50, trên lá Bài i ghi một số
nguyên dơng F[i], 1<=F[i]<=N. Hãy tìm một số nhiều nhất các lá Bài sao cho tập các số
hiệu của chúng trùng với tập các số ghi trên các lá Bài đó.
Dữ liệu vào cho bởi file INP.BL2 trong đó dòng thứ nhất ghi số N nguyên dơng.
Trong các dòng tiếp theo ghi mỗi dòng 10 số (cho tới khi hết N số) lần lợt là các số ghi
trong các lá Bài từ lá Bài 1 đến lá Bài N.

Dữ liệu ra ghi ra file OUT.BL2 trong đó dòng thứ nhất ghi số lợng lá bài. Trong các
dòng tiếp theo, mỗi dòng ghi 10 số hiệu của các lá Bài đợc chọn, các số hiệu ghi theo
thứ tự tăng dần cho tới hết.
Ví dụ
INP.BL2
14
6 5 1 3 4 2 8 10 7 9
3 2 1 9
OUT.BL2
10
- 6
Bài tập cơ bản Tập I
1 2 3 4 5 6 7 8 9 10
Bài 30. Bắt đầu từ thời điểm 0, một ngời làm N việc với số hiệu từ 1 đến N,
N<=200. Với 1<=i<=N, việc i cần làm trong T[i] đơn vị thời gian và mỗi đơn vị thời
gian từ thời điểm 0 đến lúc bắt đầu làm nó, ngời đó bị phạt một lợng tiền C[i]. Khi đã
làm một việc nào thì phải làm xong mới chuyển sang làm việc khác. Hãy thu xếp trình
tự các việc làm sao cho tổng số tiền bị phạt là ít nhất.
Dữ liệu vào đợc cho bới file INP.BL trong đó dòng thứ nhất ghi số nguyên dơng N.
Với 1<=i<=N, dòng thứ i+1 ghi hai số thực T[i] và C[i].
Dữ liệu ra ghi trong file OUT.BL. Dòng thứ nhất ghi tổng số tiền bị phạt. Từ dòng
thứ hai ghi mỗi dòng 1 cặp số: số thứ nhất là số hiệu việc, số thứ hai là thời điểm bắt
đầu việc. Trình tự từ trên xuống dới là trình tự lần lợt làm các việc.
Bài 31. Cho xâu S chỉ gồm các dấu mở và đóng ngoặc tròn (, ). Hãy xét xem liệu có
thể viết thêm một số toán hạng và dấu phép toán giữa các dấu đó để nhận đợc một biểu
thức số học đúng không.
Dữ liệu vào đợc cho bởi file INP.BL trong đó mỗi dòng ghi một xâu ký tự. Với mỗi
dòng đọc đợc của file INP.BL, có ba khả năng:
- Nếu xâu tơng ứng chứa ký tự khác với ( và ), ghi vào file OUT.BL dòng chữ
KHONG HOP LE

- Nếu xâu chỉ gồm các ký tự ( và ) và có thể viết thêm một số toán hạng và dấu phép
toán giữa các dấu đó để nhận đợc một biểu thức số học đúng thì ghi vào file OUT.BL
dòng chữ
DUNG
- Nếu xâu chỉ gồm các ký tự ( và ) nhng không thể viết thêm một số toán hạng và
dấu phép toán giữa các dấu đó để nhận đợc một biểu thức số học đúng thì ghi vào file
OUT.BL dòng chữ
KHONG DUNG
Ví dụ
INP.BL OUT.BL
(((abc)) KHONG HOP LE
((()()))() DUNG
(()(()())))) KHONG DUNG
Bài 32. Cho một đồ thị vô hớng N đỉnh đánh số từ 1 đến N, N<=100, có ma trận kề
A[1 N,1 N] và hai đỉnh U, V bất kỳ. Hãy tìm đờng đi từ U đến V (nếu có) qua ít cạnh
nhất.
Dữ liệu vào đợc cho bởi file INP.BL trong đó dòng thứ nhất ghi 3 số nguyên dơng
N, U, V, trong N dòng tiếp theo, dòng thứ i ghi N số A[i,1], . ., A[i,N].
Kết quả ghi ra file OUT.BL nh sau:
- Nếu không có đờng đi, ghi dòng chữ KHONG CO DUONG DI,
- Nếu có đờng đi, ghi hai dòng: dòng thứ nhất ghi số cạnh, dòng thứ hai ghi các
đỉnh lần lợt trên đờng đi từ U đến V.
Bài 33. Cho một đồ thị có hớng N đỉnh, N<=100, có ma trận kề A[1 N,1 N] và hai
đỉnh U, V bất kỳ. Hãy tìm đờng đi từ U đến V (nếu có) qua nhiều cung nhất mà mỗi
cung không đi hơn một lần.
Dữ liệu vào đợc cho bởi file INP.BL trong đó dòng thứ nhất ghi 3 số nguyên dơng
N, U, V, trong N dòng tiếp theo, dòng thứ i ghi N số A[i,1], . ., A[i,N].
Kết quả ghi ra file OUT.BL nh sau:
- Nếu không có đờng đi, ghi dòng chữ KHONG CO DUONG DI,
- 7

Bài tập cơ bản Tập I
- Nếu có đờng đi, ghi hai dòng: dòng thứ nhất ghi số cung, dòng thứ hai ghi các
đỉnh lần lợt trên đờng đi từ U đến V.
Bài 34. Cho số nguyên dơng N<=50 và 2N số thực X1, Y1, X2, Y2, . . ., XN, YN
mà với 1<=i<=N, (Xi,Yi) là toạ độ của điểm Mi. Tìm điểm M(X,0) trên trục hoành sao
cho khoảng cách lớn nhất từ M đến các điểm Mi là nhỏ nhất có thể đợc.
Dữ liệu vào đợc cho bởi file INP.BL trong đó dòng thứ nhất ghi số N, trong N dòng
tiếp theo, dòng thứ i ghi hai số thực Xi và Yi.
Rhông báo ra màn hình khoảng cách cần tìm.
Bài 35. Cho một thùng dung tích có thể xem là vô hạn và N bình có dung tích V1,
V2, . . ., VN lít. Liệu có thể dùng N bình này để đổ vào thùng đúng V lít nớc không?
Khi dùng mỗi bình để đổ nớc vào thùng, bình đó phải chứa đầy nớc.
Dữ liệu vào đợc cho bởi file INP.BL, dòng thứ nhất ghi số nguyên dơng N<=20 và
số nguyên dơng V. Trong N dòng tiếp theo, dòng thứ i ghi số nguyên dơng Vi.
Kết quả ghi ra file OUT.BL nh sau:
- Nếu không đợc, ghi dòng chữ KHONG DUOC
- Nếu có thể đợc, ghi dòng chữ CO THE, tiếp theo là N dòng, dòng thứ i ghi số lợng
bình nớc có dung tích Vi cần đổ vào thùng.
Bài 36. Cho N xâu ký tự A1, A2, . ., AN, N<=100, độ dài mỗi xâu Ai không quá 10,
và một xâu ký tự S. Hãy tìm mọi cách biểu diễn S dới dạng ghép của các xâu ký tự Ai,
mỗi xâu Si có thể xuất hiện trong biểu diễn đó nhiều lần.
Dữ liệu vào đợc cho bởi file XAU.TXT trong đó dòng thứ nhất ghi xâu S, dòng thứ
hai ghi số N, trong N dòng tiếp theo, dòng thứ i ghi xâu Ai.
Kết quả ghi ra file KQ.TXT nh sau:
- Nếu không có biểu diễn, ghi dòng chữ KHONG CO
- Nếu có biểu diễn, ghi mỗi biểu diễn trên một dòng theo quy cách nh ví dụ.
Ví dụ về hai file dữ liệu vào và ra:
XAU.TXT KQ.TXT
abcdef A[1]A[2]A[3]
11 A[1]A[2]A[10]A[11]

ab A[1]A[8]A[5]
cd A[1]A[8]A[9]A[3]
ef A[1]A[8]A[9]A[10]A[11]
abc A[4]A[5]
def A[4]A[9]A[3]
a
b
c
d
e
f
A[4]A[9]A[10]A[11]
A[6]A[7]A[2]A[3]
A[6]A[7]A[2]A[10]A[11]
A[6]A[7]A[8]A[5]
A[6]A[7]A[8]A[9]A[3]
A[6]A[7]A[8]A[9]A[10]A[11]
Bài 37. Hãy tìm hai số nguyên dơng P, Q sao cho có số A mà khi viết trong cơ số P
có dạng 0,(ab), (ab) là chu kỳ của A và khi viết trong dạng cơ số Q có dạng 0,(ba).
Bài 38. Có N thành phố với các tên từ 1 đến N, N<=100. Mảng C[1 N,1 N] thoả
mãn các điều kiện: C[i,j] = C[j,i] = 0 nếu không có đờng đi từ i đến j và bằng 1 nếu có
đờng đi từ i đến j, các đờng đi đều là hai chiều. Hãy xét xem có hay không một hành
trình sao cho mỗi đờng đi giữa các thành phố đợc đi đúng một lần.
- 8
Bài tập cơ bản Tập I
Dữ liệu vào đợc cho bởi file INP.BL trong đó dòng thứ nhất ghi số nguyên dơng N,
trong N dòng tiếp theo, dòng thứ i ghi N số C[i,1], . ., C[i,N].
Kết quả ghi ra file OUT.BL nh sau:
- Nếu không có thể, hãy thông báo ra màn hình dòng chữ KHONG THE
- Nếu có thể, hãy viết ra màn hình các thành phố lần lợt đi trên hành trình này.

Bài 39. Ngòi bán hàng A chỉ có M tờ tiền với mệnh giá lần lợt là A[1], A[2], . . .,
A[M] đồng. Ngời mua B chỉ có N tờ tiền, N<=30 với mệnh giá lần lợt là B[1], B[2], . . .,
B[N]; M, N <=50, các số A[i] và B[j] đều là nguyên dơng. Hãy tìm số nguyên dơng P
lớn nhất có thể đợc sao cho nếu B mua không quá P đồng, A vẫn có thể bán đúng đợc
số tiền đó bằng cách chỉ sử dụng các tờ tiền nói trên của cả hai ngời.
Dữ liệu vào đợc cho bởi file INP.BL trong đó dòng thứ nhất ghi hai số nguyên dơng
M, N, dòng thứ 2 ghi M số nguyên dơng A[1], . ., A[M], dòng thứ 3 ghi N số nguyên d-
ơng B[1], . ., B[N]. Thông báo số P ra màn hình.
Bài 40. Nhập từ bàn phím số thực dơng R. Hãy tìm cách biểu diễn R thành tổng các
số thực dơng R1, . ., Rk, các Ri<=4, sao cho R cũng bằng tích của R1, . ., Rk. Kết quả
ghi ra màn hình các số R1, . ., Rk tìm đợc.
Bài 41. Nhập từ bàn phím số nguyên dơng N<=30000. Hãy tìm cách biểu diễn N
thành tổng các số nguyên dơng A1, . . , Ak sao cho tích các số A1, . ., Ak là lớn nhất có
thể đợc. Kết quả ghi ra màn hình tích các số Ai.
Bài 42. Một thày giáo gặp N học sinh có tên 1, 2, . ., N. Học sinh i có mặt lúc T[i]
và sẽ gặp thày trong khoảng thời gian C[i]. Thày giáo sẽ gặp lần lợt từ học sinh 1 đến
học sinh N, nếu học sinh i đến vào giờ T[i] nhng thày cha gặp xong các học sinh 1,
2, . ., i-1 thì học sinh i phải đợi đến lợt mình. Giả sử thày giáo bắt đầu sẵn sàng gặp học
sinh từ thời điểm quy ớc là 0. Hãy tính xem tại thời điểm nào thày giáo gặp xong tất cả
N học sinh và ghi ra màn hình. Các số N, C[1], . ., C[N], T[1], . ., T[N] đều là nguyên d-
ơng và có thể nhập từ file hoặc từ bàn phím. Kết quả thông báo ra màn hình.
Bài 43. Có N ngời có tên tơng ứng là 1, 2, . ., N và tình trạng quen biết của N ngời
này đợc cho bởi mảng đối xứng A[1 N,1 N] trong đó A[i,j]=A[j,i]=1 nếu i quen j và
bằng 0 nếu i không quen j. Hãy xét xem liệu có thể chia N ngời đó thành 2 nhóm mà
trong mỗi nhóm, hai ngời bất kỳ đều không quen nhau?
Dữ liệu vào đợc cho bởi file INP.BL trong đó dòng thứ nhất ghi số nguyên dơng
N<=100, trong N dòng tiếp theo, dòng thứ i ghi N số A[i,1], . ., A[i,N].
Kết quả ghi ra file OUT.BL nh sau:
- Nếu không có thể, hãy thông báo ra màn hình dòng chữ KHONG THE
- Nếu có thể, hãy viết ra màn hình hai dòng, dòng thứ nhất tên những ngời thuộc

nhóm 1, dòng thứ hai tên những ngời thuộc nhóm 2.
Bài 44. Trên trục số cho N đoạn thẳng [Ai, Bi], 1<=i<=N, mà Ai và Bi là toạ độ của
các điểm đầu mút đoạn i trên trục số. Cho một điểm M với toạ độ X. Hãy xét xem tình
huống nào trong hai tình huống sau xảy ra:
1. M không thuộc đoạn nào trong số N đoạn trên, khi đó cần thông báo rõ đoạn lớn
nhất chứa M không có điểm trong chung (có thể chung đầu mút) với N đoạn nói trên.
2. M thuộc một số đoạn trong số N đoạn trên, khi đó cần thông báo rõ bao nhiêu
đoạn và những đoạn nào.
Các số N, X và Ai, Bi nhập từ file hoặc bàn phím. Kết quả thông báo ra màn hình.
- 9
Bài tập cơ bản Tập I
Bài 45. Một số nguyên dơng N rất lớn có thể đợc cho bởi số nguyên dơng P, P số
nguyên dơng A
1
, . ., A
P
và P xâu ký tự chỉ gồm các chữ số thập phân S
1
, . ., S
P
. Khi đó
N sẽ nhận đợc bằng cách viết S
1
liên tiếp A
1
lần rồi S
2
liên tiếp A
2
lần, . ., S

P
A
P
lần
Ví dụ với P=3, A1=3, S1=123, A2=4, S2=0, A3=2, S3=45 thì ta có
N = 12312312300004545
Giả sử số N đợc cho nh vậy và cho một số nguyên dơng K không vợt quá số chữ số
của N, hãy tìm cách gạch đi K chữ số của N để nhận đợc một số có giá trị nhỏ nhất.
Các số P, K, A1, . ., AP, các xâu S1, . ., SP có thể nhập từ file hoặc từ bàn phím.
Thông báo số nhận đợc ra màn hình.
Bài 46. Nhập từ bàn phím một xâu ký tự S. Thông báo ra màn hình xâu X ngắn nhất
sao cho S là ghép của một số lần liên tiếp của X (có thể X=S).
Bài 47. Biết dạng nhị phân B1B2 . . BM của một số nguyên dơng N mà M rất lớn do
đó ta không thể chuyển nó thành dạng thập phân một cách thông thờng. Hãy tìm phần
d của phép chia N cho 15 trong hệ thập phân. Dạng nhị phân của số N nhập từ bàn
phím nh một xâu ký tự chỉ gồm các ký tự 0 và 1. Hãy thông báo ra màn hình kết quả.
Bài 48. Một nhóm gồm N ngời dánh số từ 1 đến N (N<=100) ngồi quanh một bàn
tròn theo thứ tự từ 1 đến N theo chiều kim đồng hồ và chơi một trò chơi nh sau: một ng-
ời nào đó bắt đầu đếm từ số 1, ngời tiếp theo (theo chiều kim đồng hồ) đếm số 2, cứ tiếp
tục nh vậy cho tới khi ai đếm đến số S thì ra khỏi bàn. Tiếp tục, ngời ngồi cạnh đó lại
bắt đầu đếm từ số 1 cho tới khi ai đếm đến số S thì lại ra khỏi bàn, . . .
Nhập từ bàn phím các số nguyên dơng N, S và L.
3.1. Nếu bắt đầu đếm từ ngời số 1 thì ngời nào còn lại cuối cùng?
3.2. Nếu ngời còn lại cuối cùng là ngời thứ L thì bắt đầu đếm từ ngời nào?
Các câu trả lời viết ra màn hình.
Bài 49. Nhập hai số nguyên dơng M và N. In ra mọi nghiệm nguyên không âm của
phơng trình
X
1
+ X

2
+ . . + X
N
= M
Bài 50. Viết chơng trình làm các việc sau:
- Nhập một số thập phân bất kỳ không quá 1000000 và có không quá 6 số lẻ sau
dấu phảy.
- Viết ra màn hình dạng viết của số thập phân này. Ví dụ nếu nhập số 13.24, phải
thông báo ra màn hình dòng chữ mời ba phẩy hai mơi bốn.
Bài 51. Viết chơng trình làm các việc sau:
- Nhập từ bàn phím một xâu ký tự S độ dài không quá 40 chỉ gồm các ký tự 0 và 1.
- Biến đổi xâu S thành xâu S1 nh sau: đọc từ trái sang phải xâu S, thay những xâu
con chỉ gồm các ký tự 1 liên tiếp giữa các ký tự 0 bởi số thập phân nhận nó làm dạng
nhị phân và thay những xâu con chỉ gồm các ký tự 0 liên tiếp giữa các ký tự 1 bởi dạng
nhị phân của độ dài của nó, giữa các đoạn này đặt ký tự rỗng ngăn cách. Thông báo ra
màn hình xâu S1. Ví dụ nếu S = 000111100 thì S1 = 11 15 10.
- Giả sử biết S1 đợc nhập từ bàn phím, hãy khôi phục lại xâu S và viết ra màn hình.
Bài 52. Viết chơng trình làm các việc sau:
1. Nhập từ file text DT.TXT số nguyên dơng N ghi ở dòng thứ nhất, N<=100 và
mảng A[1 N,1 N] là ma trận kề của một đồ thị vô hớng, dòng thứ i+1 của file ghi dòng
thứ i của mảng A.
- 10
Bài tập cơ bản Tập I
2. Hãy xét xem đồ thị đó có bao nhiêu thành phần liên thông và mỗi thành phần
liên thông gồm các đỉnh nào.
3. Nhập từ bàn phím hai số nguyên dơng U và V, 1<=U,V<=N, là hai đỉnh của đồ
thị. Hãy thông báo ra màn hình có hay không đờng đi từ U đến V và đờng đi đó đi qua
những đỉnh nào.
Bài 53. Cho một hình chữ nhật kích thớc MxN, M, N nguyên dơng. Hình này đợc
chia thành MxN ô vuông đơn vị bằng các đờng song song với các cạnh. Trên ô vuông

[i,j] (dòng i cột j) ghi một số nguyên dơng A[i,j]<=30000.
1. Nhập từ file text MANG.TXT số nguyên dơng M, N ghi ở dòng thứ nhất, M,
N<=100 và mảng A[1 M,1 N] các số nguyên dơng, dòng thứ i+1 của file ghi dòng thứ i
của mảng.
2. Từ một ô ta có thể di chuyển đến một ô kề cạnh với nó nếu trị tuyệt đối của hiệu
hai số ghi trong hai ô đó là một số nguyên tố. Từ một ô ta có thể đi đến một ô khác của
mảng bằng một dãy các di chuyển nh vậy. Một tập hợp K các ô đợc gọi là một miền nếu
giữa hai ô bất kỳ của K đều có thể đi đến đợc nhau nhng từ một ô bất kỳ thuộc K ta
không thể đi đến một ô không thuộc K. Hãy thông báo ra màn hình số miền và mỗi
miền gồm các ô nào (có thể ghi ra file).
3. Nhập từ bàn phím bốn số nguyên dơng U, V, X, Y, U, X <= M, V, Y <= N. Hãy
thông báo ra màn hình liệu có thể đi từ ô [U,V] đến ô [X,Y] đợc không; nếu đi đợc thì
đờng đi đó qua các ô nào (có thể ghi ra file).
Bài 54. Nhập từ bàn phím hai số nguyên dơng M và N. Hãy thông báo ra màn hình
xem có thể nhận đợc M bằng cách gạch đi từ N một số chữ số không?
Bài 55. Trên mặt phẳng toạ độ một hình chữ nhật với các cạnh song song với các
trục toạ độ đợc xác định bởi hai đỉnh đối tâm. Trong Bài này, mọi hình chữ nhật đều có
các cạnh song song với các trục toạ độ.
1. Nhập từ file CN.TXT số nguyên dơng N<=30 ghi ở dòng thứ nhất. Trong N dòng
tiếp theo mỗi dòng ghi 4 số là toạ độ của hai đỉnh đối tâm của một hình chữ nhật, các
số này là nguyên có giá trị tuyệt đối không quá 100.
2. Hãy xác định hình chữ nhật nhỏ nhất S chứa N hình chữ nhật đã cho. Thông báo
ra màn hình 4 số là toạ độ của hai đỉnh đối tâm của hình chữ nhật này.
3. Tìm diện tích phần của hình S không nằm trong hình chữ nhật nào trong số N
hình trên. Thông báo kết quả ra màn hình.
Bài 56. Nhập từ bàn phím một số nguyên dơng N<=3000000 và in ra màn hình số
chữ số 1 của biểu diễn số N trong hệ nhị phân.
Bài 57. Ta xây dựng một dãy vô hạn chỉ gồm các chữ số 0, 1, 2 qua các bớc nh sau:
- Tại bớc 0, phần đầu của dãy là 0.
- Nếu tại bớc k ta đã xây dựng đợc phần đầu của dãy là a[1]a[2] . . . a[m], thì tại bớc

k+1, phần đầu của dãy là a[1]a[2] . . . a[m]b[1]b[2] . . . b[m] mà với 1 <= i <= m, b[i] =
a[i]+1 (mod 3). Nh vậy dãy đó đợc xây dựng nh sau:
0 01 0112 01121220 0112122012202001 . . . . .
Nhập từ bàn phím số nguyên dơng N<=3000000000. Hãy in ra màn hình chữ số thứ
N của dãy này.
Bài 58. Nhập tám số thực X1, Y1, X2, Y2, AX, AY, CX, CY trong đó (X1, Y1) là
toạ độ của điểm M1, (X2, Y2) là toạ độ của điểm M2, (AX, AY) và (CX, CY) tơng ứng
là toạ độ của hai đỉnh đối tâm A, C của một hình chữ nhật ABCD có các cạnh song
- 11
Bài tập cơ bản Tập I
song với các trục toạ độ. Hãy trả lời ra màn hình vị trí tơng đối của đoạn M1M2 đối với
hình chữ nhật ABCD thuộc trờng hợp nào trong ba trờng hợp sau:
- Trờng hợp 1: M1M2 nằm ngoài hình chữ nhật (mọi điểm của đoạn nằm ngoài
hình chữ nhật)
- Trờng hợp 2: M1M2 nằm trong hình chữ nhật (mọi điểm của đoạn nằm trong hình
chữ nhật có thể trên biên)
- Trờng hợp 3: Có điểm của M1M2 nằm trong hình chữ nhật và có điểm của M1M2
nằm ngoài hình chữ nhật.
Bài 59. Nhập từ bàn phím một số nguyên dơng N<=1000 và in ra màn hình xâu ký
tự S độ dài N chỉ gồm các ký tự 0 hay 1 sao cho S không có xâu con nào xuất hiện liên
tiếp 3 lần trong nó.
Bài 60. Viết chơng trình làm các việc sau:
- Nhập một số nguyên dơng N<=200 và hai dãy N số nguyên A[1], . . ., A[N];
B[1], . . ., B[N] (có thể từ file hoặc từ bàn phím).
- Thông báo ra màn hình: hai dãy đó có cùng các số hạng nh nhau và chỉ khác nhau
về thứ tự sắp xếp không.
Bài 61. Có N điểm đánh số từ 1 đến N, N<=100, và N số nguyên dơng A1, A2, . . .,
AN. Hãy tìm cách nối các cặp điểm bởi các đoạn thẳng sao cho với mọi i, 1 <= i <= N,
điểm i đợc nối với đúng Ai điểm. Chơng trình phải nhập số N, N số A[1], . . ., A[N] và
viết ra màn hình hoặc file cách nối mỗi điểm với các điểm khác.

Bài 62. Nhập từ bàn phím hai số nhị phân X và Y. Hãy in ra màn hình số nhị phân
Z có giá trị lớn nhất có thể đợc mà Z nhận đợc từ X bằng cách gạch đi một số chữ số
nhị phân nào đó và Z cũng nhận đợc từ Y bằng cách gạch đi một số chữ số nhị phân
nào đó.
Bài 63. Cho n đội bóng thi đấu theo thể thức mỗi đội đều đấu với n-1 đội còn lại. Ta
gọi một giai đoạn của giải là một bảng trong đó ghi rõ từng cặp đội đã đấu với nhau hay
cha. Viết chơng trình làm các việc sau:
1. Nhập từ bàn phím số n các đội bóng, n > 2.
2. Chọn cách thể hiện một giai đoạn của giải và nhập một giai đoạn nào đó từ bàn
phím.
3. Tại giai đoạn đó của giải, hãy tìm và in ra ba đội bóng hoặc đều đã đấu với nhau
hoặc đều cha đấu với nhau nếu có ba đội nh vậy. Nếu không có, hãy thông báo là không
có.
Bài 64. Một hãng buôn có n cửa hiệu và n ngời bán hàng. Mỗi ngời bán hàng có thể
đi trực tiếp đến một số cửa hiệu bằng ô tô buýt. Hãy viết chơng trình giải Bài toán sau:
1. Nhập từ bàn phím số n > 3.
2. Sinh ngẫu nhiên một bảng thể hiện với mỗi ngời bán hàng một số cửa hiệu mà
ngời đó có thể đi tới trực tiếp bằng ô tô buýt.
3. Hãy giúp chủ hãng phân bổ n ngời bán hàng làm ở n cửa hiệu sao cho số ngời đi
trực tiếp tới nơi làm việc bằng ô tô buýt là nhiều nhất. In ra màn hình phân công đó và
thông báo có bao nhiêu ngời đi trực tiếp tới nơi làm việc bằng ô tô buýt.
Bài 65. Trong môt giải bóng đá có n đội tham gia,mỗi đội đều có sân bóng riêng và
các trận đấu chỉ diễn ra trên các sân của n đội này.
Trong giải, hai đội gặp nhau đúng một lần và trận đấu diễn ra trên sân của một
trong hai đội. Giải đợc tổ chức theo các vòng đấu, trong mỗi vòng, các trận diễn ra đồng
- 12
Bài tập cơ bản Tập I
thời. Cần thu xếp lịch đấu sao cho số vòng ít nhất có thể đợc và trong toàn giải, số trận
đấu trên sân nhà và số trận đấu trên sân khách của mỗi đội không chênh nhau quá 1.
Hãy nhập từ bàn phím số đội bóng n và in lịch thi đấu từng vòng ghi rõ từng trận

đấu đội nào gặp đội nào và trên sân nào ra file.
Bài 66. Cho n điểm khác nhau trên mặt phẳng toạ độ vuông góc pi = (xi,yi),
1<=i<=n. Xét đờng gấp khúc lần lợt nối các điểm p
1
, p
2
, ,p
n
, p
1
.
Hãy trả lời các câu hỏi sau ra màn hình:
1. Đờng gấp khúc này có tự cắt không, tức là có hay không các đỉnh p
i
và p
j
sao cho
đoạn (p
i
, p
i+1
) cắt đoạn (p
j
, p
j
1) tại điểm không là các đầu mút.
2. Nếu đờng gấp khúc không là tự cắt thì nó có phải là một đa giác lồi n đỉnh hay
không?
3. Nếu không, hãy tìm trong số n điểm trên các điểm lập thành một đa giác lồi bọc
tất cả n điểm.

Bài 67. Cho một bảng chữ nhật chia thành các ô vuông, một chiều m ô, một chiều n
ô, tại ô vuông [i,j] ghi số nguyên A[i,j]. Ta gọi một hình chữ nhật trong bảng này là tập
hợp các ô [i,j] mà 1<=p<=i<=q<=n, 1<=r<=j<=s<=n với p, q, r, s nào đó và các số ghi
trong các ô này giống nhau. Hãy tim hình chữ nhật trong bảng có diện tích lớn nhất.
Dữ liệu vào đợc cho bởi file text MANG.TXT trong đó số nguyên dơng M, N ghi ở
dòng thứ nhất, M, N<=100 và dòng thứ i+1 của file ghi dòng thứ i của mảng A.
Bài 68. Để xác định một hình chữ nhật có các cạnh song song với các trục toạ độ
vuông góc, ta chỉ cần xác định toạ độ của hai đỉnh đối tâm. Ta cố định một hệ toạ độ
vuông góc trên mặt phẳng. Khi đó một hình chữ nhật đợc cho bởi bốn số a,b,c,d trong
đó (a,b) và (c,d) là toạ độ của hai đỉnh đối tâm của hình chữ nhật đó.
Cho N hình chữ nhật, hình thứ i đợc cho bởi bốn số (ai, bi, ci, di) với ai, bi, ci, di là
các số nguyên, 0<=i<=N. Hãy trả lời hai câu hỏi sau:
1. Số lớn nhất các hình chữ nhật không có điểm chung là bao nhiêu?
2. Lấy một hình chữ nhật (a, b, c, d) bất kỳ với a, b, c, d nguyên, N hình chữ nhật
đã cho có phủ kín hình chữ nhật này không?
N hình chữ nhật đợc cho bằng một file các string chunhat.dat trong đó dòng thứ
nhất ghi số N<=20, N dòng kế tiếp ghi mỗi dòng một hình chữ nhật đợc cho bởi bốn số
nguyên, giữa hai số có một dấu trống ngăn cách. Dòng thứ n+2 ghi toạ độ một hình chữ
nhật để xem xét trong câu 2.
Kết quả ghi ra màn hình.
Bài 69. Trong một thành phố có không quá 200 ngời gồm N loại công dân, và có N
loại ý kiến khác nhau về một vấn đề liên quan đến lợi ích sống còn của mỗi c dân. Một
công dân có thể thuộc một số loại công dân, ví dụ một công dân có thể thuộc loại thích
nghe nhạc, loại thích uống bia, loại đề nghị cấm đi xe máy và có thể có nhiều ý kiến
trong số N ý kiến. Hãy chọn ra N ngời khác nhau sao cho mỗi loại công dân đều có đại
diện trong số đợc chọn và mỗi loại ý kiến đều có ngời trong số đợc chọn ủng hộ.
Dữ liệu đợc cho bởi một file text với tên city.dat trong đó dòng thứ nhất ghi số
nguyên dơng N, tiếp theo với mỗi công dân, mỗi công dân đợc ghi tên gồm các chữ cái
la tinh liền nhau chữ đầu tiên viết hoa, các chữ sau viết thờng, tiếp theo là các số chỉ
loại ý kiến, giữa tên và loại ý kiến, hai loại ý kiến của một tên cách nhau bằng một ký

tự rỗng, hai loại công dân cách nhau bằng một dòng rỗng.
Hãy viết chơng trình làm các việc sau:
1. In ra danh sách mọi công dân của thành phố, mỗi ngời đúng một lần theo thứ tự
a, b, c,
- 13
Bài tập cơ bản Tập I
2. In ra màn hình ít nhất một danh sách n ngời khác nhau đại diện đủ n loại công
dân và n loại ý kiến, mỗi ngời ghi rõ đại diện cho loại công dân nào và loại ý kiến nào.
Nếu không thể chọn đợc, hãy thông báo ra màn hình là không thể chọn đợc.
Bài 70. Một ngời có n đồng muốn mua hàng trong số k loại hàng có thể có. Đơn giá
loại hàng thứ i là g[i]. Hãy liệt kê ra cho ngời đó mọi cách khác nhau có thể có để phân
bổ n đồng thành các khoản t[1], , t[k] trong đó khoản t[i] dùng để mua loại hàng i sao
cho số lợng loại hàng thứ i mua đợc phải nguyên (tức là t[i] phải là bội của g[i]). Các số
n, k là nguyên dơng, các số t1, , tk là các số nguyên không âm.
Dữ liệu đợc ghi vào một file các số nguyên mang tên mua.dat. Số thứ nhất là n, số
thứ hai là k, k số còn lại lần lợt là các đơn giá của các loại hàng g1, , gk.
Viết ra màn hình các cách phân bổ có thể có. Mỗi cách phân bổ ghi thành hai dòng:
một dòng cho các t[i] và một dòng cho số lợng hàng tơng ứng mua đợc.
Bài 71. Cho một bảng vuông cạnh dài N đơn vị, N nguyên dơng đợc chia thành NxN
ô vuông bằng nhau bởi các đờng song song với các cạnh của bảng. Trên ô [i,j] của bảng,
1<=i,j<=N ghi một số nguyên dơng A[i,j]. Từ một ô vuông ta có thể di chuyển đến một
trong bốn ô kề cạnh với nó nếu trị tuyệt đối của hiệu các số ghi trên hai ô đó là một số
nguyên tố, mỗi lần di chuyển nh vậy mất một đơn vị thời gian. Từ một ô vuông ta cũng
có thể di chuyển đến một trong bốn ô kề cạnh với nó khi trị tuyệt đối của hiệu các số
ghi trên hai ô đó không là một số nguyên tố nhng mỗi lần di chuyển nh vậy mất
KxNxN đơn vị thời gian nếu di chuyển đó là di chuyển thứ K thuộc loại này trên một
hành trình đi qua một số ô.
Viết chơng trình nhập từ file văn bản INP.TXT mảng A. File này có N+1 dòng
(N<=15), dòng thứ i, 1<=1<=N, ghi N số nguyên dơng không lớn hơn 30000 lần lợt là
các số A[i,1], A[i,2], . . ., A[i,N], dòng thứ N+1 ghi bốn số U, V, X, T, 1<= U, V, X, T

<=N. Tìm một cách đi từ ô [U,V] đến ô [X,T] với thời gian ít nhất. Ghi ra file OUT.TXT
dãy các ô liên tiếp trên hành trình đó bắt đầu từ ô [U,V] kết thúc bằng ô [X,T], mỗi ô
ghi trên một dòng gồm hai số là số dòng và số cột của nó.
Bài 72. Cho một hình vuông có cạnh độ dài N nguyên dơng. Bảng này đợc chia
thành N x N ô vuông bằng nhau bằng các đờng song song với các cạnh hình vuông.
Trên mỗi ô vuông ghi một số nguyên dơng <=10000.
Từ một ô X ta có thể di chuyển đên một ô Y kề cạnh với nó nếu số ghi trong ô X bằng
số trong ô Y cộng với một số chính phơng nguyên dơng. Cho trớc hai ô [x,y] và [z,t]. Một
đờng đi từ ô [x,y] đến ô [z,t] là một dãy các di chuyển qua các ô kề cạnh (theo quy tắc
trên) bắt đầu từ ô [x,y] và kết thúc tại ô [z,t]. Ô khác với các ô [x,y] và [z,t] mà mọi đ-
ờng đi từ ô [x,y] đến ô [z,t] đều phải đi qua ô đó đợc gọi là ô đặc biệt.
- Nhập dữ liệu từ file INP.TXT trong đó dòng thứ nhất ghi 5 số nguyên dơng lần lợt
là các số N, x, y, z, t, N<=100. Dòng thứ i+1, 1<=i<=N, ghi N số trong dòng thứ i của
hình vuông theo thứ tự từ trái sang phải. Không phải kiểm tra tính đúng đắn của dữ
liệu.
- Ghi ra file OUT.TXT các ô đặc biệt, mỗi dòng ghi hai số lần lợt là số dòng và sô
cột và số cột của ô. Nếu không có đờng đi từ ô [x,y] đến ô [z,t] hoặc không có ô đặc biệt
nào thì ghi thông báo
Khong co
Ví dụ với file INP.TXT
4 1 1 4 4
31 27 26 1
27 26 22 5
8 22 13 4
- 14
Bài tập cơ bản Tập I
12 20 14 3
file OUT.TXT sẽ là
3 3
3 4

Với file INP.TXT
4 1 1 3 4
1 29 26 1
29 26 19 5
8 19 14 7
12 20 14 5
file OUT3.TXT sẽ là
Khong co
Bài 73. Cho hai xâu ký tự X và Y. Để biến đổi một xâu, ta có thể dùng một trong ba
loại biến đổi sau:
B1(m,c). Thêm vào trớc ký tự thứ m của xâu ký tự c.
B2(m,c). Thay ký tự thứ m của xâu bởi ký tự c.
B3(m). Xoá ký tự thứ m của xâu.
Đọc từ file INP.BL1 hai xâu ký tự X và Y, trong đó dòng thứ nhất/hai viết xâu X/Y.
Hãy tìm một số ít nhất các biến đổi thuộc ba loại trên để biến X thành Y. Quá trình
biến đổi đợc ghi ra file OUT.BL1 theo quy cách sau: nếu các biến đổi dùng là S1, S2, . .,
Sk và quá trình biến đổi là
X =S1=> X1 =S1=> X2 . . Xk-1 =Sk=> Xk=Y
thì file OUT.BL1 sẽ có dạng:
X
S1
X1
S2
X2
. . .
Sk
Y
Bài 74. Có N việc đánh số từ 1 đến N, N<=20. Việc thứ i cần làm trong C[i] đơn vị
thời gian và thu đợc hiệu quả B[i]. Giả sử ta chỉ có A đơn vị thời gian làm việc và tại
mỗt thời điểm chỉ có thể làm không quá một việc. Hãy chọn một số việc làm trong A

đơn vị thời gian để có hiệu quả lớn nhất.
Dữ liệu vào đợc cho bởi file INP.BL3 trong đó dòng thứ nhất ghi số N, dòng thứ hai
ghi N số B[1], . ., B[N], dòng thứ ba ghi N số C[1], . ., C[N]. Kết quả ghi ra file
OUT.BL3 gồm hai dòng: dòng thứ nhất ghi hiệu quả, dòng thứ hai ghi các công việc
làm.
Bàì 75. Cho một hình vuông có cạnh độ dài N nguyên dơng, N<=100 đợc chia
thành NxN ô vuông bằng nhau bằng một lới đờng song song với các cạnh. Để định vị, ta
quy ớc hình vuông đợc đặt trong góc phần t thứ nhất (X>=0, Y>=0) của một hệ trục toạ
độ OXY với hai đỉnh nằm trên hai trục toạ độ và một đỉnh trùng với gốc toạ độ. Giao
điểm của hai đờng của lới đợc gọi là một nút có toạ độ nguyên không âm (X,Y),
0<=X,Y<=N. Có tất cả S= (N+1)
2
nút. Các nút này đợc đánh số từ 1 đến S lần lợt theo
tổng các toạ độ, nhỏ trớc, lớn sau. Nếu cùng tổng, thứ tự u tiên theo thành phần X, Y.
Nh vậy trình tự đánh số các nút là nút 1 là (0,0), nút 2 là (1,0), nút 3 là (0,1), nút 4 là
(0,2), . . . . Cho trớc hai nút có số hiệu tơng ứng là H và K, một ngời có thể theo các
cạnh (của lới đờng) để đi từ H đến K. Hãy chọn cho ngời đó một hành trình từ nút H
- 15
Bài tập cơ bản Tập I
đến nút K sao cho mỗi nút trên hành trình không xuất hiện quá một lần và sao cho số
nút phải đi qua ít nhất có thể đợc.
Dữ liệu vào nhập từ bàn phím gồm số nguyên dơng N và hai số H, K là số hiệu của
hai nút.
Kết quả ghi ra file OUT.B2, dòng thứ nhất ghi số lợng nút của hành trình, dòng thứ
hai ghi các số hiệu của các nút lần lợt trên hành trình, bắt đầu từ H và kết thúc là K, hai
số hiệu liên tiếp cách nhau một ký tự rỗng.
Bài 76. Có N quả cân với các trọng lợng tơng ứng là 1kg, 3kg, . . ., 3
N-1
kg và một
cân bàn. Ta muốn chỉ dùng cân bàn và N quả cân này để cân túi đờng có trọng lợng M

kg trong một lần cân. Liệu ta có thể cân dợc không.
Nhập từ bàn phím số nguyên dơng N<=15 và số nguyên dơng M<=100000000. Nếu
không cân đợc, ciết ra màn hình chữ KHONG. Nếu cân đợc, viết ra màn hình chữ CO
và trong hai dòng tiếp theo, dòng thứ nhất viết ra số hiệu các quả cân đặt cùng phía túi
đờng, dòng thứ hai viết ra số hiệu các quả cân đặt tại đĩa cân phía bên kia.
Bài 77. Có N công ty có tên từ 1 đến N, N<=10. Giữa hai công ty i và j có thể có
hoặc không có mối quan hệ khống chế thể hiện bởi số C[i,j] mà C[i,j]=0 nếu i không
khống chế j và C[i,j]=1 nếu i khống chế j. Hãy tìm một dãy gồm nhiều công ty khác
nhau nhất i
1
, . ., i
m
sao cho i
k
khống chế i
k+1
, 1<=k<m.
Dữ liệu vào đợc cho bởi file CT.TXT trong đó dòng thứ nhất ghi số N, trong N dòng
tiếp theo, dòng thứ i ghi các số C[i,1], . ., C[i,N].
Kết quả ghi ra màn hình dãy các công ty cần tìm.
Bài 78. Một mê cung là một hình chữ nhật có kích thớc MxN, M và N nguyên dơng
không lớn hơn 100. Mê cung đợc chia thành các ô vuông đơn vị bằng các đờng song
song với các cạnh. Mỗi ô vuông có thể đi qua hoặc không đi qua đợc. Từ một ô vuông,
ta có thể đi đến một ô vuông kề cạnh với nó nếu ô vuông đó có thể đi qua đợc. Một ngời
đứng ở ô vuông [K,L] (thuộc dòng K cột L). Hãy xét xem liệu ngời đó có thể đi ra khỏi
mê cung không? Ngời đó đi ra đợc mê cung nếu đi đợc đến một ô thuộc biên của mê
cung.
Dữ liệu vào đợc cho bởi file INP.B1 trong đó dòng thứ nhất ghi bốn số M, N, K, L.
Trong M dòng tiếp theo, dòng thứ I ghi N số A[I,1], A[I,2], . ., A[I,N] thể hiện tình
trạng các ô trong vệt ngang thứ I của mê cung, A[I,J] = 0/1 tuỳ theo ô [I,J] đi qua đợc

hay không đi qua đợc.
Kết quả ghi ra file OUT.B1 nh sau: Dòng thứ nhất ghi chữ CO hay KHONG tuỳ
theo ngời đó có thể đi ra hay không đi ra ô thuộc biên. Nếu câu trả lời là CO, từ dòng
thứ hai ghi mỗi dòng hai số là chỉ số dòng và chỉ số cột của các ô lần lợt đi qua bắt đầu
từ ô [I,J] đến ô thuộc biên.
Bài 79. Cho N điểm trên mặt phẳng với các số hiệu tơng ứng là 1, 2, . ., N, N<=100.
Giữa một số cặp điểm có đoạn thẳng nối chúng với nhau sao cho nếu đi theo các đoạn
thẳng này (từ điểm đầu đến điểm cuối) ta có thể đi đợc từ một điểm bất kỳ đến một
điểm bất kỳ khác. Liệu xuất phát từ một điểm nào đó ta có thể đi qua mọi đoạn nối mỗi
đoạn đúng một lần không?
Dữ liệu vào đợc cho bởi file INP.BL trong đó dòng thứ nhất ghi số nguyên dơng N,
trong các dòng tiếp theo, mỗi dòng ghi hai số nguyên dơng I, J <= N thể hiện việc điểm
I đợc nối với điểm J.
Kết quả ghi ra file OUT.BL nh sau:
- Dòng thứ nhất ghi số 1 hay 0 tuỳ theo có thể hay không có thể
- Nếu dòng thứ nhất ghi số 1, từ dòng thứ hai, mỗi dòng ghi 10 số hiệu của các điểm
lần lợt trên hành trình cần tìm.
- 16
Bài tập cơ bản Tập I
Bài 80. Cho một đồ thị N đỉnh, N<=100, có ma trận trọng số không âm C và với mọi
i, j, C[i,j]<=100. Cho trớc hai đỉnh U và V. Hãy tìm đờng đi ngắn nhất từ đỉnh U đến
đỉnh V.
Dữ liệu vào đợc cho bởi file INP.BL trong đó dòng thứ nhất ghi ba số N, U, V.
Trong N dòng tiếp theo, dòng thứ i ghi N số C[i,1], . ., C[i,N].
Kết quả ghi ra file OUT.BL nh sau: dòng thứ nhất ghi độ dài đờng đi ngắn nhất từ
U đến V; trong các dòng tiếp theo, mỗi dòng ghi một đỉnh của đờng đi từ U đến V lần l-
ợt theo thứ tự trên hành trình từ U đến V.
Bài 81. Cho dãy gồm N số nguyên khác nhau X
1
, X

2
, , X
N
. Ta nói dãy đó là có
dạng hình sin bậc M nếu dãy gồm đúng M+1 đoạn liên tiếp luân phiên đơn điệu tăng -
giảm hoặc giảm - tăng.
Ví dụ: Dãy số
1 5 9 13 12 8 4 2 3 7 11 15 14 10 6
là dãy hình sin bậc M=3, dãy đó đợc phân chia thành 4 đoạn:
Đoạn 1: 1 5 9 13 Đơn điệu tăng
Đoạn 2: 13 12 8 4 2 Đơn điệu giảm
Đoạn 3: 2 3 7 11 15 Đơn điệu tăng
Đoạn 4: 15 14 10 6 Đơn điệu giảm
Cho dãy X gồm N số nguyên khác nhau X
1
, X
2
, , X
N
(2<N<=100) và cho
M<=N-2
Kiểm tra xem dãy X có phải là dãy hình sin bậc M hay không? Nếu không thì sắp
xếp lại dãy đó để nhận đợc dãy hình sin bậc M.
Dữ liệu vào đợc cho bởi file văn bản với tên BAI1.INP có cấu trúc nh sau:
- dòng đầu gồm hai số nguyên N và M,
- dòng sau ghi N số nguyên X
1
, X
2
, , X

N
Các số trên một dòng cách nhau ít nhất một dấu cách.
Kết quả ghi ra file văn bản với tên BAI1.OUT theo cấu trúc sau:
- dòng đầu ghi số 1 nếu dãy đã cho là dãy hình sin bậc M và ghi số 0 nếu ngợc lại ;
- dòng thứ i trong số M+1 dòng tiếp theo ghi các phần tử của đoạn đơn điệu thứ i
(i=1,2, M+1). (Nếu dòng thứ nhất ghi số 0 thì trong M+1 dòng sau, ghi các đoạn
đơn điệu tơng ứng với dãy đã đợc sắp xếp lại).
Bài 82. Có một ô tô mát đợc ghép từ các chi tiết có một trong hai trạng thái 0
hay 1 nh hình 1. Ô tô mát có cấu trúc nh hình 2 gồm 8 chi tiết G1, . ., G8 với ba lối vào
A, B, C. Trạng thái của ô tô mát đợc thể hiện bởi một xâu nhị phân độ dài 8 là các trạng
thái tơng ứng của G1, . ., G8.
| | | |
| | | |
| | | |
| | | |
| | | |
/ \ \ / / \
/ / \ \ / / \ \
/ / \ \ / / \ \
/ / \ \ / / \ \
Hình 1 Trạng thái 1 Trạng thái 0
- 17
Bài tập cơ bản Tập I
Ô tô mát hoạt động nh sau: khi thả một quả cầu vào một lối vào nào đó, sau khi
quả cầu đi qua một chi tiết nào đó, chi tiết đó thay đổi trạng thái từ 0 thành 1 hoặc từ 1
thành 0. Hoạt động của ô tô mát đợc thể hiện bởi một xâu ký tự S chỉ gồm các chữ cái
hoa A, B, C mà mỗi ký tự trong xâu S thể hiện việc ta thả quả cầu vào lối vào với tên ký
tự đó. Ví dụ S = AABC có nghĩa là ta lần lợt thả quả cầu vào các lối A, A, B, C.
A B C
| | | | | |

| | | | | |
| | G1 | | G2 | | G3
/ / \ / / \ / \ \
/ / \ \ / / \ \ / / \ \
/ / \ \ / / \ \ / / \ \
/ / \ \ / / \ \ / / \ \
/ / \ / \ / \ \
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | G4 | | G5 | |
\ \ / \ \ / / \ / /
\ \ / / \ \ / / \ \ / /
\ \ / / \ \ / / \ \ / /
\ \ / / \ \ / / \ \ / /
\ / \ / \ /
| | | | | |
| | | | | |
| | G6 | | G7 | | G8
/ / \ / / \ / \ \
/ / \ \ / / \ \ / / \ \
/ / \ \ / / \ \ / / \ \
Hình 2
Bài toán đặt ra nh sau: Cho hai trạng thái bất kỳ T1 và T2 của ô tô mát. Hãy tìm
một xâu ký tự S ngắn nhất có thể đợc thể hiện hoạt động của ô tô mát chuyển từ trạng
thái T1 đến trạng thái T2.
Các xâu T1 và T2 nhập từ bàn phím và viết xâu S ra màn hình.
- 18

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

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