Bai Tap On Thi HSG 2011 2012

You might also like

Download as doc, pdf, or txt
Download as doc, pdf, or txt
You are on page 1of 31

PHẦN CĂN BẢN

Bài 1: Trong các biểu thức toán học sau, biểu thức nào có kiểu Logic (tức là Boolean theo chuẩn của Pascal):
a. X2 + y2 >0
b. ax2 + bx + c
c. 1 + ½ + 1/3 + … + 1/100
d. F(x) = x4 + 3x2 + 5x2 – 10x – 3
Bài 2: Tính giá trị của các biểu thức sau:
a. (2>1 + 1.52) or not (52 = 32 + 42)
b. Not(2>1) and (12=10+2) or not((10<0)and(1+1/2+1/3>7/4))
Bài 3: Viết chương trình nhập vào từ bàn phím số tự nhiên N và thông báo kết quả ra màn hình như sau:
a. Nếu N<10 thì thông báo “N có một chữ số”
b. 10<=N<100 thì thông báo “N có hai chữ số”
c. Nếu 100<=N<1000 thì thông báo “N có 3 chữ số”
d. Nếu N>=1000 thì thông báo “N rất lớn” và in số đảo ngược của N ra màn hình.
Bài 4: CHỉ dùng một biến kiểu boolean hãy viết chương trình so sánh hai số
(1+1/100)101 và (1+101)100
Bài 5: Nhập vào 3 số thực dương a,b,c. hãy kiểm tra đoạn thẳng c có thể đặt nằm gọn trong hình chữ nhật
cạnh a,b hay không?
Bài 6: Giải bài toán cổ điển:
Trăm trâu trăm cỏ
Trâu đứng ăn năm
Trâu nằm ăn ba
Trâu già ba con ăn 1
Hỏi có bao nhiêu trâu mỗi loại?
Bài 7:Tìm tất cả các số có 3 chữ số sao cho tổng các lập phương của các chữ số bằng chính nó.
Bài 8: Tìm số nhỏ nhất lớn hơn N (N nhập từ bàn phím) sao cho tổng các chữ số của nó bằng chính nó.
Bài 9: Tìm số lớn nhất nhỏ hơn N (N nhập từ bàn phím) sao cho tổng các chữ số của nó bằng chính nó.
Bài 10: Cho số tự nhiên m. Tìm số nguyên k lớn nhất thỏa mãn 4k < m.
Bài 11: Cho các số thực x, y1,y2,…,y100 (y1< y2 <…<y100) y1 <x < y100. Tìm chỉ số k sao cho yk-1 < x <= yk+1.
Bài 12: Số đối xứng:
Một số được gọi là số đối xứng khi các chữ số của nó đối xứng qua tâm.
Ví dụ : 5, 44, 212, 71217 là số đối xứng.
Yêu cầu: cho một số nguyên dương x (x có số chữ số <= 100), hãy tìm số đối xứng lớn hơn và gần x
nhất.
Cho một số x = 371, số đối xứng lớn hơn và gần x nhất là 373.
Bài 13: Liệt kê các số đối xứng
Một số nguyên dương được gọi là đối xứng nếu chữ số thứ nhất bằng chữ số cuối, chữ số thứ hai bằng
chữ số gần cuối… Cho 2 số nguyên dương m và n (m<n) và liệt kê các số đối xứng nằm giữa m và n.
Chúng ta có thể lần lượt kiểm tra tính đối xứng của các số từ m đến n bằng cách đảo ngược số đang
xét, một số là đối xứng nếu đảo lại vẫn bằng chính nó.
Bài 14: Tính tổng m chữ số cuối của n
Cho 2 số tự nhiên n, m. Hãy tính tổng m chữ số cuối cùng của n
Bài 15: Tính tổng
Cho số nguyên dương n, người ta viết các số nguyên liên tiếp từ 1 tới n trong hệ thập phân để tạo ra 1
dãy các chữ số. Tính tổng các chữ số của dãy.
Input
Một số n duy nhất (n <= 10100)
Output
Số nguyên duy nhất là kết quả tìm được
Example
Input:
3
Output:
6
Bài 16: Điền dấu
Hãy điền các dấu "+" hoặc "-' vào các vị trí thích hợp của dãy số giảm dần 987654321 để = 100. Đưa ra
tất cả các phương án tìm được.
Vd:
98-7+6+5+4-3-2-1=100
9+8+76+5+4-3+2-1=100
Bài 17: Bài toán số
Viết chương trình in ra màn hình tất cả các số nguyên tố N có k chữ số (k<=4) và in ra bảng đối chiếu
gồm tất cả các số thập phân mà có số nhị phân tương ứng gồm s chữ số.
Ví dụ :
K=2 s=3
Kết quả:
11 13 17 19 23 …97
4 100
5 101
6 110
7 111
Bài 18: Tính 2n
Viết chương trình tính 2^n (với n>=300).
ví dụ:
n=300
kết quả:
20370359763344860862684456884093781610514683936659
36250636140449354381299763336706183397376
n=1750
kết quả:
6345888132906392829859730089039318793445271133934062450316321689752604954233106463782430
6684678017409589648376227743951260242376028504008896725372091266260687912746396908332236
9416955788107924570813666281878596848075644823498260534072054462882768479566902246742447
0506528669773638055061944141343368867971487132939781538724608333948763668985024250838108
7761260082470397550651464224897551293947068756263588478482958085631680258818589678856964
206134578170223425956448891992966353626713765173107628514602 446304450779684546621210624
Bài 19: Số vòng
Bài toán: Một số có độ dài n chữ số được gọi là “vòng” khi ta nhân nó với bất kỳ số nguyên nào từ 1
đến n ta đều thu được một vòng của các chữ số của số nguyên gốc, tức là có thể chuyển chữ số cuối ra
thành chữ số đầu một số lần ta sẽ được số nguyên gốc.
Ví dụ: số 142857 là một số “vòng” vì n=6
142857 x 1 = 142857
142857 x 2 = 285714
142857 x 3 = 428571
142857 x 4 = 571428
142857 x 5 = 714285
142857 x 6 = 857142
Yêu cầu: Xác định một số có “vòng” hay không?
Input: Nhập số N có khỏang 60 chữ số, có thể có số 0 ở đầu: 01 là số có hai chữ số khác với số 1.
Output: Ghi ra màn hình kết quả cho biết số đó có vòng hay không?
ví dụ:
142857-------------------------------->Số vòng
0588235294117647------------------->Số vòng
052631578947368421---------------->Số vòng
0434782608695652173913----------->Không phải số vòng
0344827586206896551724137931--->Không phải số vòng
Bài 20: Dãy số:
Ứng với mỗi số tự nhiên x, ta có số tự nhiên f(x) bằng tổng bình phương các chữ số của x, từ x ta xây
dựng dãy Xn như sau:
X1 = x, X2 = f(X1), X3 = f(X2), …, Xn = f(Xn-1) = Xi với 1<=i<=n-1.
Dãy này kết thúc khi lặp nó bắt đầu lặp lại chu kỳ của nó. Có nghĩa là nó sẽ dừng khi một xi nào đó
trùng lại một trong các xi trước nó.
Ví dụ X =12 ta có dãy:
12, 5, 25, 29, 85, 89, 145, 42, 20, 4, 16, 37, 58, 89
X=13 ta có dãy :
13, 10, 1, 1
Viết chương trình nhập vào hai số tự nhiên a và b (a<b), hãy chỉ ra các số x (a<=x<=b) sao cho từ x ta
xây dựng được dãy Xn dài nhất trong các dãy xây dựng được. Chương trình kết thúc khi nhập a=b.
Ví dụ :
Trường hợp a=90 và b=145
Ta có dãy sau :
112 6 36 45 17 50 25 29 85 89 145 42 20 4 16 37 58 89
121 6 36 45 17 50 25 29 85 89 145 42 20 4 16 37 58 89
Độ dài của hai dãy trên là 19 phần tử
Bài 21: Số chia hết hoàn toàn
Số chia hết hoàn toàn là số có tất cả các chữ số đều là ước của số hình thành từ số chữ số đầu tiên đến
chữ số đó.
Cho số nguyên N (N<30001), tìm số số chia hết hoàn toàn thoả mãn lớn hơn 10 và nhỏ hơn N.
Bài 22: Bài toán diện tích cực đại
Cho một ma trận gồm toàn các số 0,1. hãy tìm diện tích hình chữ nhật lớn nhất chứa toàn số 1.
Dữ liệu vào được nhập từ bàn phím
- Nhập 2 số nguyên M,N (1<M,N<150) mỗi số cách nhau 1 khoảng trắng
- N dòng sau, mỗi dòng chứa M số nguyên (0,1) mỗi số cách nhau một khoảng trắng
Dữ liệu ra ghi ra màn hình
- Dòng đầu ghi số nguyên là diện tích lớn nhất tìm được
- Dòng thứ hai ghi 4 số nguyên , hai số đầu là ghi đỉnh trên bên trái, hai số cuối là toạ độ đỉnh dưới bên
phải của hình chữ nhật tìm được
ví dụ:
18 10
011100000100000000
000001111111111000
000001111111111110
001111111111111000
100001111111111111
001001111111111101
011011111111111100
110001111111111000
100001111111111111
000010111000000111
Kết quả:
80
2 6 9 15
Bài 23: Bài toán diện tích
Cho một bảng hình chữ nhật kích thước M x N, gồm MxN hình vuông đơn vị (hình vuông đơn vị là hình
vuông có cạnh là 1 đơn vị). trên mỗi hình vuông đơn vị có một chữ cái trong bảng chữ cái tiếng anh
viết hoa
Bài tóan: Tìm diện tích hình chữ nhật lớn nhất có kích thước P x Q (1<P<M và 1<Q<N) trong bảng chữ
nhật nói trên mà tất cả các chữ cái trong hình vuông đơn vị là đôi một khác nhau.
ví dụ:
44
AECG
FFJH
FFFF
ABCD
kết quả:
6
ECG
FJH
Bài 24: Dãy số dài vô hạn
Các số chính phương xếp theo thứ tự không giảm sẽ tạo thành một dãy số dài vô hạn. ví dụ:
149162536496481100…. Em hãy viết chương trình nhập vào số nguyên dương N sau đó in ra chữ số
thứ N của dãy số chính phương vô hạn nói trên
ví dụ: N = 10 --> Kết quả: 4
Bài 25: Giải phương trình trong phạm vi số nguyên không âm:
X + Y + Z = 10
Bài 26: Giải phương trình x+y+z=12 trong phạm vi số nguyên không âm với điều kiện x<4?
Bài 27: Giải phương trình x+y+z=13 trong phạm vi số nguyên không âm với điều kiện x<4,y<5,z<6?
Bài 28: cho trước các số tự nhiên N,a,b,c. giải phương trình sau trong phạm vi số nguyên không âm:
X+y+z=N với điều kiện x<a,y<b,z<c.
Bài 29 : Cho n xâu kí tự S1,S2,..,Sn gọi d(U,V) (với U và V là hai xâu kí tự bất kì) là tổng số kí tự không giống
nhau trong hai xâu trên, mỗi loại kí tự chỉ được nhớ một lần. ví dụ d(‘aabbc’,’bcdd’)=2 vì chỉ có hai kí tự a và d
là không giống nhau trong xâu trên.
a. viết hàm tính d(U,V)
b. tính max(d(U,V)) và min(d(U,V))
Bài 30: (Bảy hai không)
Cho số nguyên dương N (0<=N<=500.000). Tìm số nguyên dương S nhỏ nhất thoả mãn tính chất sau đây:
a. S>=N
b. Trong biểu diễn cơ số 10, S không chứa các chử số khác ngoài 7,2,0 và không bắt đầu bằng 0.
c. S chia hết cho N.
Ví dụ:
Bộ test Kết quả
3 27
61 70272
Bài 31: (Số Hexa)
Cho các chữ số hệ 16 là: 0,1,2,...,9, A,B,…,F. Xét tập H là các số hệ 16, không quá 8 chữ số, trong mỗi số không
có chữ số nào giống nhau và không có chữ số 0 khôn có nghĩa ở đầu, số lớn nhất trong tập này là FEDCBA98,
số thứ 2 là FEDCBA97,….
Yêu cầu: cho số nguyên N (N <> 0) và một số X hệ 16 thuộc tập H, nếu K là số thứ tự của X sắp theo thứ tự
giảm dần, Hãy xác định số Y trong tập H có thứ tự là N+K
Ví dụ:
Bộ test Kết quả
3 FEDCBA95 FEDCBA92
-2 FEDCBA94 FEDCBA96
Bài 31: Cho trước một dãy số bao gồm các số 0 và 1. Dãy này có độ dài <255. Người ta định nghĩa dãy con
đúng như sau: Một dãy con đúng là một dãy con liên tục bất kỳ của dãy trên bao gồm các số hạng giống nhau.
Nhiệm vụ:
1. Viết chương trình tìm dãy con đúng dài nhất của dãy trên.
2. Một dãy con đúng bậc 1 của dãy trên được coi là một dãy con bất kỳ của dãy trên bao gồm các số
hạng giống nhau ngoại trừ các dãy con có 2 phần tử trở xuống. Hãy tính độ dài dài nhất của dãy
con đúng bậc 1.
Chý ý: bản thân dãy số cũng là dãy con của chính nó.
Yêu cầu: Kiểm tra dữ liệu vào chặt chẽ. Lưu file bài làm với tên DCDUNG.PAS
Ví dụ:
DCDUNG.INP DCDUNG.OUT
111100001110101010101111111111111 13
13
101010101010101010101 1
0
101010202010101010101 Dữ liệu sai!
0
Bài 32: Cho một dãy gồm N hòn bi gồm 3 màu Trắng (T), Đỏ (D) và Xanh (X) xếp thành một dãy thẳng. Hãy viết
chương trình chỉ dùng phép đổi chỗ hai hòn bi khác màu ở hai vị trí khác nhau (Không dùng phép chèn) để xếp
lại dãy các hòn bi sao cho đầu dãy là các hòn bi trắng, giữa là các hòn bi đỏ và cuối cùng là các hòn bi xanh.
Chương trình dùng càng ít phép đổi chổ hai hòn bi càng tốt. Lưu bài làm với tên XB.PAS
Input: cho trong file XB.IN dòng đầu ghi số N (N<=10000), dòng sau lần lượt ghi N số thuộc tập {1,2,3} với qui
định số 1 là hòn bi Trắng, 2 là hòn bi Đỏ, số 3 là hòn bi Xanh, các số cách nhau ít nhất 1 dấu cách.
Output:xuất ra file XB.OUT:
Dòng đầu là phép đổi chổ hai hòn bi khác màu
Các dòng sau mỗi dòng 50 số ghi các số dãy bi đã sắp xếp theo yêu cầu đề bài, các số cùng dòng ghi
liền nhau.
Ví dụ:
XB.IN XB.OUT
10 3
2132122131 1111222233
Bài 33: Dãy số hạnh phúc:
Tại vương quốc Ba Tư xa xưa, người ta thường tổ chức các cuộc thi tìm dãy số hạnh phúc: các chàng trai, cô
gái thông minh trong thời gian ngắn nhất phải tìm ra được một dãy số hạnh phúc gồm nhiều phần tử nhất
Dãy số tự nhiên a1,a2,…ak được gọi là hạnh phúc nếu thoả mãn các điều kiện sau đây:
- Dãy trên là dãy không tăng.
- Với mọi i>1, ai hoặc là số nguyên tố hoặc phải là ước của một trong các số a1,a2,…,ai-1.
Nhiệm vụ: Em hãy lập trình để giúp các chàng trai, cô gái Ba Tư tìm ra dãy số hạnh phúc càng dài càng tốt, với
số hạng đầu tiên là N.
Dữ liệu vào cho trong file HAPPY.INP gồm một dòng duy nhất chứa số nguyên dương N
Dữ liệu ra ghi ra file HAPPY.OUT là dãy số hạnh phúc các số cách nhau 1 khoảng trắng.
Chú ý: Lưu bài bàm với tên HAPPY.PAS, kiểm tra dữ liệu vào.
Ví dụ:
HAPPY.INP HAPPY.OUT
8 85321
Bài 34: Cho một dãy số nguyên dương. Hãy tìm tất cả các phần tử có tổng bằng tổng 2 phần tử khác của dãy.
Dữ liệu vào cho trong file MANG.INP gồm 2 dòng
Dòng 1: ghi số N
Dòng 2 ghi N số nguyên mỗi số cách nhau ít nhất 1 khoảng trắng.
Dữ liệu ra cho trong file MANG.OUT gồm nhiều dòng, mỗi dòng ghi một số nguyên
Chú ý: lưu bài làm với tên MANG.PAS
Ví dụ:
MANG.INP MANG.OUT
10 3=1+2
1 2 3 4 5 6 0 100 58 10 4=1+3
5=1+4
5=3+2
10= 4 + 6
Bài 35: Dãy FAREY
Tên file văn bản bài làm tên FAREY.PAS
Tên file chứa dữ liệu vào FADEY.INP
Tên file chứa dữ liệu ra FADEY.OUT
Dãy Farey của số tự nhiên n, ký hiệu F(n) là dãy sắp tăng các phân số trong khỏang [0,1] tức là các phân số tối
giản có dạng t/m với 0<=t<=m<=n. với phân số đầu tiên của dãy có giá trị là 0, ta qui định viết 0/1, với phân số
cuối cùng của dãy có giá trị là 1 ta qui định viết 1/1. Biết n trong khỏang từ 1 đến 300. Viết dãy Farey của n
FAREY.INP FAREY.OUT
N k
t1 m1
t2 m2
…..
tk mk
Trong đó k là số lượng phân số trong dãy tìm được. mỗi dòng chứa một phân số ti mi. dữ liệu trên cùng một
dòng cách nhau ít nhất 1 dấu cách.
Ví dụ:
FAREY.INP FAREY.OUT
4 7
0 1
1 4
1 3
1 2
2 3
3 4
1 1
Bài 36: Số nguyên tố.
Tên file văn bản bài làm tên NGUYENTO.PAS
Tên file chứa dữ liệu vào NGUYENTO.INP
Tên file chứa dữ liệu ra NGUYENTO.OUT
Giai thừa N ký hiệu là N! là tích của tất cả các số nguyên tố từ 1 đến N. Giai thừa N tăng rất nhanh, ví dụ: 5!
=120, 10!=3628800. Một cách để xác định các số lớn như vậy, người ta chỉ ra số lần xuất hiện các số nguyên tố
trong phân tích của nó ra thừa số nguyên tố. ví dụ 825 có thể xác định như sau: (0 1 2 0 1) có nghĩa là 825 =
20.31.52.70.111.
Cho một số nguyên dương N<=1000. Hãy tìm biểu diễn của số N! dưới dạng số lần xuất hiện các số nguyên tố
trong phân tích số N ra các thừa số nguyên tố.
Dữ liệu vào cho trong file NGUYENTO.INP gồm 1 dòng duy nhất chứa số N
Dữ liệu ra ghi ra file NGUYENTO.INP dãy các số là số lần xuất hiện các số nguyên tố trong phân tích của N!.
Ví dụ:
DAYSO.INP DAYSO.OUT
10 8421

Bài 37: Hóan vị trước


Tên file văn bản bài làm tên PREPER.PAS
Tên file chứa dữ liệu vào PREPER.INP
Tên file chứa dữ liệu ra PREPER.OUT
Các hóan vị của n chữ cái đầu tiên trong bảng tiếng anh viết thường a..z được sắp theo thứ tự từ điển. Cho
trứơc hóan vị H trong dãy trên, hãy tìm hóan vị P đứng sát trước hóan vị của H.
Dữ liệu vào ghi trong tập tin PREPER.INP gồm:
- Dòng đầu tiên là giá trị t cho biết số lượng các bộ test (1 <=t<=10)
- T dòng tiếp theo mỗi dòng ghi một bộ test.
Dữ liệu ra ghi ra file PREPER.OUT gồm t dòng ứng với t bộ test đã cho, mỗi dòng là một háon vị P đứng sát
trước hóan vị H trong test tương ứng. nếu không có hóan vị sát trước thì ghi số 0.
Ví dụ:
PREPER.INP PREPER.OUT
3 abc
acb adcb
bacd 0
abcd
Bài 38: Hoán vị

Tên file văn bản bài làm tên HOANVI.PAS


Tên file chứa dữ liệu vào HOANVI.INP
Tên file chứa dữ liệu ra HOANVI.OUT
Cho X là một hoán vị của N số nguyên dương đầu tiên (1 <=N <=9). Các hoán vị được liệt kê theo thứ tự từ
điển. Ví dụ: N =3  123 < 132 < 213 < 231 < 312 < 321. yêu cầu: Tìm một hoán vị Y của N số nguyên dương
đầu tiên gần hoán vị X nhất (X<Y) sao cho: số nguyên được tạo bởi các chữ số của hoán vị Y giữ nguyên thứ tự
chia hết cho một số nguyên k cho trước ( 2 <=k<=8)

HOANVI.INP HOANVI.OUT
N = 3; K = 4 312

213
Bài 39: Thành Lũy
Tên file văn bản bài làm tên THANHLUY.PAS
Tên file chứa dữ liệu vào THANHLUY.INP
Tên file chứa dữ liệu ra THANHLUY.OUT
Trong thời chiến tranh vùng vịnh, để đề phòng sự tấn công của các binh lính Mỹ và lính Nato, tổng thống Irắc
Sadam Hussen đã quyết định cho xây các căn cứ phòng thủ quanh các khu vực trọng điểm ở lãnh thổ Irắc.
Theo lời khuyên của một tín đồ khủng bố ANKEDA theo đạo hồi là Binladen, tên các căn cứ phải được chọn là
một xâu con các kí tự liên tiếp nhau của một tên W nào đó do tổ chức khủng bố qui định. Ví dụ: W là
‘baobaab’ thì tên của các căn cứ có thể là: ‘ba’, ‘oba’, ‘baab’, …, còn ‘bab’ hoặc ‘bob’ không thể được dùng để
đặt tên, dĩ nhiên các căn cứ khác nhau không được đặt tên trùng nhau. Sadam Hussen muốn biết có thể xây
tối đa bao nhiêu căn cứ dựa vào số tên có thể đặt vì thế ơng mới ra lnh cho lập trình vin giỏi nhất của nội cc
của ơng lập trình để giải quyết các vấn đề trn..
Dữ liệu vào cho trong file THANHLUY.INP gồm một dòng chứa tên W của Binladen
THANHLUY.INP THANHLY.OUT
Baobaab 23
Bài 40: BIẾN ĐỔI XÂU
Tên file văn bản bài làm tên BD_XAU.PAS
Tên file chứa dữ liệu vào BD_XAU.INP
Tên file chứa dữ liệu ra BD_XAU.OUT
Cho trước một xâu nhị phân có độ dài bất kỳ, cần biến đổi xâu nhị phân này về dạng toàn số 0, các phép biến
đổi chỉ có thể là một trong các loại sau:
Biến đổi xâu con 11 thành 00
Biến đổi xâu 010 thành 000
Hãy chỉ ra một các biến đổi xâu đã cho thành xâu có toàn số 0.
Dữ liệu vào cho trong file văn bản BD_XAU.INP gồm một dòng duy nhất chứa xâu nhị phân
Dữ liệu ra ghi ra file BD_XAU.OUT gổm nhiều dòng, mỗi dòng là 1 phép biến đổi thứ i
Ví dụ:
BD_XAU.INP BD_XAU.OUT
11111111111111111111 11111111111111111111
11111111111111111100
00111111111111111100
00001111111111111100
00000011111111111100
00000000111111111100
00000000001111111100
00000000000011111100
00000000000000111100
00000000000000001100
00000000000000000000
10111111111111111110 Khong the bien doi
Bài 41: Cho hai dãy số nguyên dương
a1, a2,…, an
b1,b2,…, bm
Sao cho: a1 + a2 + … + an = b1 + b2 + bm
Yêu cầu: hãy lập một bảng C[1..n, 1..m] gồm các số nguyên dương thỏa mãn:
- Tổng các số hàng I bằng ai
- Tổng các số cột j bằng aj

Dữ liệu vào cho trong file GREEDY.INP gồm hai dòng:


- Dòng đầu ghi dãy a gồn n phần tử
- Dòng hai ghi dãy b gồm m phần tử

Kết quả: xuất ra file GREEDY.OUT ghi mảng C


Chú ý: Các số trong file cách nhau ít nhất một dấu cách.
Bài 42: Chuỗi đối xứng
Một chuỗi được gọi là đối xứng nếu nó không có ít hơn một ký tự và nếu ta đọc từ trái sang phải hay từ phải
sang trái đều giống nhau. Ví dụ: ‘A’; ‘TET’; ‘CAOOAC’ là chuỗi đối xứng
‘ABCSDFDSSSS’ không phải là chuỗi đối xứng.
Viết chương trình nhập vào một chuỗi ký tự cho trước S, có chiều dài N (1<=N<=20000) và cho biết chiều dài
chuỗi con đối xứng dài nhất. chuỗi con của S là chuỗi gồm một số ký tự liên tiếp nhau trong S có độ dài nhỏ
hơn hoặc bằng N
Dữ liệu vào cho trong tập tin văn bản CHUOI.INP gồm 2 dòng
- Dòng đầu ghi giá trị n
- Dòng sau gồn n ký tự liên tiếp nhau gồm các chữ cái in hoa (A Z)

Dữ liệu ra ghi vào tập tin văn bản CHUOI.OUT gồm một số duy nhấtlà độ dài chuỗi con đối xứng dài nhất.
Ví dụ:
CHUOI.INP CHUOI.OUT
18 13
IKACOBEGIGEBOCAHTM
Bài 43: SỐ PALINDROM Tên chương trình: PALINNUM.PAS
Số được gọi là Palindrom,nếu đọc từ trái sang phải hoặc từ phải sang trái đều được cùng một số. Ví dụ,
số 75457 là số Palindrom.
Dĩ nhiên, một số có phải là Palindrom hay không còn phụ thuộc vào cơ số biểu diễn. Số 17 không phải
là Palindrom ở cơ số 10, nhưng ở cơ số 2 thì là Palindrom ( 10001).
Hãy xác định xem số cho trước (ở hệ 10) có phải là Palindrom không và nếu có thì ở các cơ số nào. Xét
cơ số trong phạm vi từ 2 đến 16.

Dữ liệu: Vào từ file văn bản PALINNUM.INP, mỗi dòng một số nguyên dương ở hệ 10. File dữ liệu kết thúc
bằng dòng chứa một số 0.

Kết quả: Đưa ra file văn bản PALINNUM.OUT, mỗi dòng của file input ( trừ dòng cuối cùng) ứng với một dòng
output, thông tin ra bắt đầu bằng thông báoYES hoặc NO, nếu là YES thì sau đó là các cơ số cần biểu diễn.

Ví dụ:
PALINNUM.INP PALINNUM.OUT
17 YES 2 4 16
19 NO
0

Bài 44: Cho một chuỗi từ file String.Str có độ dài m <255 kí tự gồm có số và chữ (không có kí tự đặc biệt và
khoảng trắng). Bạn tìm xem trong chuỗi có bao nhiêu chuỗi con là chuỗi số mà khi nó là số thì tổng lập
phương từng kí tự số của nó bằng chính nó, ghi lại các chuỗi đó. Sau đó bạn hãy sắp xếp lại chuỗi đó sao cho
các chuỗi số (chữ số) tăng giảm liên tục nghĩa là chuỗi số (hoặc chữ) sắp tăng nếu chuỗi số (chữ) trước nó sắp
giảm và ngược lại. Tất cả ghi ra file String.OUT
Bộ Test
atddt153yy578gfy2431dggggg354t6154
Có 1 chuỗi tổng lập phương là
153 = 1*1*1+5*5*5+3*3*3
chuỗi mới là: addtt531yy57fgy4321gggggd345t654
hoặc ttdda135yy75ygf1234dggggg543t456
Bài 45: Viết chương trình cộng 2 số nguyên lớn có N chữ số(N>=20). Sau đó sử dụng chương trình này in ra
màn hình số hạng thứ M của dãy fibonanci. Kết quả ghi ra file CongFi.OUT gồm 2 dòng: dòng 1 ghi tổng của 2
số nguyên lớn, dòng 2 ghi số hạng thứ M của dãy Fibonanci.
Có kiểm tra dữ liệu vào.
Ví dụ:
congfi.inp congfi.out
123 579
456 9969216677189303386214405760200
150
Bài 46 Card mạng (3đ)
Trung tâm máy tính NewAge dự trữ trong kho N card mạng được đánh số hiệu lần lượt từ 1 tới N (2 ≤ N ≤
200). Định kỳ 6 tháng một lần, Trung tâm tiến hành việc kiểm định chất lượng để xác định card hỏng bằng
cách thực hiện K phép thử. Mỗi phép thử được thực hiện trên một cặp card bất kỳ bằng cách lắp chúng với hai
máy tính và thử xác lập quan hệ giữa hai máy đó. Nếu các máy liên lạc được với nhau có nghĩa cả hai card
mạng chọn ra còn tốt, trong trường hợp ngược lại − một trong hai card hoặc cả hai đã bị hỏng. Tuy nhiên,
nhân viên được giao thực hiện công việc này lại không phải là người thật chu đáo và cẩn thận. Do vậy, anh ta
đã chọn các cặp card mạng để tiến hành K phép thử trên không theo một trình tự nào, thậm chí có thể có
những card mạng được thử đi thử lại nhiều lần. Rất may là anh ta vẫn còn ghi lại kết quả cụ thể của từng phép
thử.
Yêu cầu: Theo kết quả của K phép kiểm tra (0 ≤ K ≤ 10 000) hãy cho biết tình trạng của các Card có thể xác
định chính xác
Dữ liệu: vào từ file văn bản NETCARD.INP:
- Dòng đầu tiên chứa 2 số nguyên N K,
- K dòng tiếp theo sau: trên mỗi dòng chứa 3 số nguyên I J V, trong đó I, J tương ứng l số hiệu hai card mạng
được kiểm tra; V là kết quả kiểm tra: V = 1 khi hai card đều tốt, còn V = 0 trong trường hợp ngược lại.
Kết quả: Đưa ra file văn bản NETCARD.OUT đưa ra N số nguyên Q1, Q2,.. .,QN, trong đó QI − xác định chất
lượng của card mạng thứ I: QI=1 − tốt; QI=0 − hỏng; QI=2 − chưa r.
Các số trong các file vào/ra được cách nhau ít nhất một dấu cách hoặc tổ hợp ký tự xuống dòng
Baøi laøm löu vôùi teân NETCAR.PAS
Ví dụ:

Bài 47 : Đặc trưng ảnh. (3đ).


Một nhóm nghiên cứu đang giải quyết bài toán nhận dạng mặt người trong ảnh. Anh chụp mặt người
sau khi đã xử lý là một bảng vuông khích thước N x N (10 <= N <=100) với mỗi ô (I,j) (1<=I,j<=N) có giá trị từ 0
đến 255 là mức độ xám của ảnh chụp tại ô này ( trong đó 0 là mầu nền). Để xác địnhị trí có thể là mặt người,
nhóm thống kê các đặc trưng có dạng hình vuông kích thước K x K (1<=K<=10) trong đó tất cả các giá trị trong
hình vuông này phải khác 0.
Yêu cầu : Từ một hình chụp mặt người, hãy giúp nhóm nghiên cứu đếm tất cả các đặc trưng có trong
hình đó.
Dữ liệu vào trong tập tin văn bản FEATURE.INP Trong đó :
 Dòng đầu chứa hai số nguyên N và K, mỗi số cách nhau một khoảng trắng.
 Dòng thứ I trong N dòng tiếp theo chứa tương ứng dòng thứ I của bảng A. kỗi số cách nhau
một khoảng trắng.
Dữ liệu kết quả ghi trong tập tin văn bản có te7n FEATURE.OUT.là số đặc trưng tìm được.
Bài làm lưu với tên FEATURE.PAS.
Ví dụ :
FEATURE.INP FEATURE
62 7
0 12 15 0 33 30
17 19 23 15 16 0
11 12 0 14 14 0
0 10 11 8 10 0
0 8 7 12 0 0
0 0 11 13 0 0

Đề 47: Lập trình tìm tất cả các cách tay thế các dấu ? bởi các phép tính +, -, *, /, trong biểu thức dưới đây sao
cho biểu thức có giá trị = 35.
(((1 ? 2) ? 3) ? 4) ? 5) ? 6)
Đề 48: Khi hỏi địa chỉ của một người bạn, người bạn nói: - Mình ở đường A, số nhà là một số có ba chữ số, mà
hai chữ số đầu cũng như hai chữ số cuối lập thành cách số chính phương và số này gấp 4 lần số kia. Nhiệm vụ:
Hãy lập trình tìm giúp số nhà của người bạn.
Đề 49: Tìm một số chẵn lớn nhất có 5 chữ số mà ba chử số đầu (giữ nguyên giá trị từ trái sang phải) tạo thành
một số chính phương và 3 chữ số cuối ( giữ nguyên thứ tự) tạo thành một lập phương đúng.
Đề 50: Tìm một số có hai chữ số; biết rằng số đó chia hết cho 3 và nếu thêm số 0 vào giữa các chữ số rồi cộng
vào số mới tạo thành một số bằng hai lần chữ số hàng trăm của nó thì được một số lớn gấp chín lần số phải
tìm.

BÀI TẬP 51: Đang đi dạo chơi trong thànhp phố, bốn học sinh nhận thấy một chiếc xe vi phạm luật giao thông.
Không ai trong các em nhớ số hiệu ghi trên biển xe, nhưng vì tất cả các em đều là học sinh yêu toán nên mỗi
em đã ghi nhớ được đặc tính của số hiệu ấy. Một em nhớ lại rằng số hiệu đó là AB tiếp theo là một số có bốn
chữ số. Em thứ hai nhớ lại rằng hai chữ số đầu giống hệt nhau. Em thứ ba nhớ lại rằng hai chữ số cuối giống
hệt nhau. Còn em thứ tư quả quyết rằng ta có bốn chữ số đó là một số chính phương. Căn cứ vào những bằng
chứng ấy, hãy tìm ra số hiệu chiếc xe.
Ví dụ: AB7744
BÀI TẬP 52: Cho một số có bốn chữ số abcd. Biết rằng a, b, c, d theo thứ tự ấy là 4 số tự nhiên liên tiếp từ nhỏ
đến lớn, cho biết bacd là một số chính phương. Tìm số abcd.

BÀI TẬP 53: Một số gồm 4 chữ số giống nhau chia ch một số gồm 3 chữ số giống nhau thì được thương là 16
và số dư là một số r nào đó. Nếu số bị chia và số chia đều bớt đi một chữ số (bất kì) thì thương không đổi và
số dư giảm bớt 200. tìm số đó.

BÀI TẬP 54: Tìm một số có ba chữ số sao cho tỷ số giữa số đó và tổng các chữ số của nó có giá trị lớn nhất.

BÀI TẬP 55: Có bốn học sinh nữ: Mỹ, Mận, Mai và Mơ đang ở trong căn phòng của ký túc xá. Một cô đang sửa
áo, Một cô đang chải đầu, một cô đang viết thư, và một cô đang đọc sách. Biết thêm rằng:
1. Mỹ không sửa áo và không đọc sách.
2. Mận không viết thư và không sửa áo
3. Nếu Mỹ không viết thư thì Mơ không sửa áo
4. Mai không đọc sách và không sửa áo
5. Mơ không đọc sách và không viết thư. Hãy nói chính xác mỗi cô đang làm gì?

BÀI TẬP 56: Một lần Sherlock Holmes đến chơi nhà bác sĩ Watson. Họ ngồi trong một phòng khách cạnh một
cửa sổ nhìn ra vườn. Từ ngoài vườn, vang lên tiếng cười đùa của một đám trẻ con.
Anh được mấy cháu? Sherlock Holmes hỏi.
Bác sĩ Watson: trong đám trẻ con này không phải chỉ có con nhà tôi mà có trẻ con của những bốn gia đình. Trẻ
nhà tôi đông nhất. Trẻ con cậu em đông thứ nhì. Trẻ con nhà cọ em gái đông thứ ba, cuối cùng là trẻ con nhà
ông chú ít nhất.
Chúng quậy như vậy vì cả đám không đủ để chia thành hai nhóm, mỗi nhóm 9 người.
Nếu nhân 4 số chỉ số trẻ con của các nhà thì được kết quả chính là số nhà của tôi mà anh đã biết. Sherlock
Holmes là một thám tử tài ba, có khả năng suy diễn logic rất tốt nên sau vài phút suy nghĩ, ông bèn nói “Anh
cho thiếu giả thiết nên không thể biết chính xác được số trẻ con của mỗi gia đình”
Xin anh hãy cho biết thêm ông chú của anh có một con hay nhiều hơn?
Bác sĩ Watson trả lời thêm (điều này chúng ta không biết)
Sau đó Shelock Holmes đã nó chính xác số trẻ con của mỗi gia đình.
Nhiệm vụ: Hãy lập trình cho biết là Sherlock Holmes trả lời như thế nào về:
Số nhà của bác sĩ Watson là số nào?
Mỗi gia đình có mấy con?

Bài tập 57: Sau một thời gian dài xa cách, hai người bạn cũ gặp lại nhau. Một trong hai người đó thông báo là
anh ta đã có 3 người con trai mà tích các tuổi của chúng bằng 36, còn tổng các tuổi bằng số cửa sổ của nhà
cạnh chổ đang gặp nhau.
Nghe xong, người thứ hai nói rằng anh ta không thể xác định được tuổi của chúng. Do đó người thứ nhất nói
thêm rằng, đứa con trai đầu của anh ta có tóc màu hng đỏ.
Sau đó người thứ hai lập tức đọc ngay số tuổi của đám trả con một cách chính xác. Nhiệm vụ: Lập trình cho
biết tuổi của mỗi đứa con?

Bài tập 58: làm thế nào được đem 6 lít nước từ sông về nếu trong tay chỉ có hai cái thùng. Một thùng dung
tích 4 lít, một thùng dung tích 9 lít và không thùng nào có vạch chứa dung tích?

Bài tập 59: Trong một can có 16 lít xăng. Làm thế nào để chia số xăng đó thành hai phần băng nhau, mỗi phần
8 lít nếu chỉ có thêm một can 11 lít và một can 6 lít để không?
Bài 60: Cho hai dãy số
A1, A2, A3,…An
B1, B2, B3, …Bn
Nhiệm vụ: Hãy viết chương trình tìm ra một dãy con chung liên tục có độ dài lớn nhất của hai dãy trên.
Dữ liệu vào cho trong file DAYSO.INP gồm 3 dòng
Dòng 1: ghi số n
Dòng 2: ghi các giá trị của dãy a
Dòng 3 ghi các giá trị của dãy b
Dữ liệu ra: xuất ra file DAYSO.OUT gồm 2 dòng
Dòng 1: ghi chiều dai của dãy con chung liên tục
Dòng 2: ghi các phần tử trùng của hai dãy
Ví dụ:
DAYSO.INP DAYSO.OUT
8 3
20497865 497
01497565

Câu 61: Cho trước một xâu nhị phân có độ dài bất kì được đưa vào từ file văn bản INPUT.TXT. cần biến đổi xâu
nhị phân này về dạng toàn số 0. các phép biến đổi chỉ có thể là một trong các loại sau:
Biến đổi xâu con 11 thành 00.
Biến đổi xâu con 010 thành 000
Hãy chỉ ra một cách biến đổi xâu đã cho thành xâu toàn số 0. Kết quả thể hiện trong file OUTPUT.TXT như sau:
Dòng đầu tiên chứa xâu ban đầu, sau đó mỗi dòng là một xâu tiếp theo sau một phép biến đổi, xâu cuối cùng
là xâu toàn 0.
Ví dụ:
INPUT.TXT OUTPUT.TXT
11001010110010 11001010110010
00001010110010
00001010000010
00000010000010
00000000000010
00000000000000
Bài 62: Hy xy dựng một dy gồm N ký hiệu từ một bảng K kí hiệu sao cho khơng cĩ hai dy con lin tiếp no giống
nhau. Chẳng hạn với ba ký kiệu 1, 2, 3. Hy xy dựng một dy cĩ độ di N thỏa mn tính chất trn.
Ví dụ: N=5 thì dy 12312 l dy chấp nhận được, cịn cc dy 12323 v 12123 l khơng chấp nhận được.
Ví dụ:
STRING.INP STRING.OUT
5 12312
Bài 63: DãY TUẦN HỒN
Tên file văn bản bi lm tn TUANHOAN.PAS

Tn file chứa dữ liệu vo TUANHOAN.INP

Tn file chứa dữ liệu ra TUANHOAN.OUT

Cho dy số tuần hịan 1,2, …, 9, 1,2, …., 9, 1,2, …, 9, …. Một tam giác được thiết lập từ dy tuần hịan đ cho bắt
đầu từ s với số dịng r cĩ dạng như sau:
(với s=2, r=6)
2 3 5 8 3 8 5 2 7 2 5 7
4 6 9 4 9 6 3 8 3 6
7 1 5 1 7 4 9 4
2 6 2 8 5 1
7 3 9 6
4 1
Dữ liệu vo cho trong file TUANHOAN.INP gồm một dịng duy nhất chứa 2 số nguyn s v r nằm trn cng một dịng
cch nhau ít nhất 1 dấu cch
Dữ liệu ra ghi ra file TUANHOAN.OUT l một tam giác như yêu cầu đề bi
Ví dụ
TUANHOAN.INP TUANHOAN.OUT
26 2 3 5 8 3 8 5 2 7 2 5 7
4 6 9 4 9 6 3 8 3 6
7 1 5 1 7 4 9 4
2 6 2 8 5 1
7 3 9 6
4 1
KIỂM TRA 9.2.2006
Bài toán 64: người máy thu gôm mẫu vật
Người máy di chuyển trên nền mặt phẳng chia thành lưới ô vuông n*n, lưới ô vuông này bao gồm các số 0 và
1 (số 0 là không có mẫu vật, số 1 là có mẫu vật). Gốc tọa độ đặt tại A(0,0), người máy xuất phát từ một điểm
(x0,y0), người máy di chuyển theo một chương trình lập sẵn, trong quá trình di chuyển người máy có thể thu
gom những mẫu vật nằm trên đường đi và tại vị trí nó đang đứng.
Chương trình lập sẵn cho người máy là một xâu kí tự bao gồm một dãy các lệnh dạng Cm, trong đó C là một
trong 4 chữ cái:
Rm: di chuyển sang phải m ô.
Lm: di chuyển sang trái m ô. Với 0 =< m < 10
Dm: di chuyển xuống dưới m ô.
Um: di chuyển lên trên m ô.
Ta qui ước nếu m=0 thì đoạn lệnh tương ứng đặt trước m được bỏ qua.
Yêu cầu: xác định điểm kết thúc (X1,Y1) của người máy sau khi hoàn thành chu trình di chuyển và số lượng mẫu
vật thu gom được.
Dữ liệu vào: cho trong file ROBOT.INP gồm: 5
Dòng thứ nhất chứa số n 10100
M dòng tiếp theo là mảng vuông n*n 01111
(2,2)
10110
Dòng thứ m+1 là toạ độ xuất phát (X0,Y0) 6
01001
Dòng m+2 là xâu kí tự thể hiện quá trình di chuyển của người máy.
11000
Dữ liệu ra: ghi trong file ROBOT.OUT gồm: 2 dòng 22
Dòng 1: ghi toạ độ lúc người máy kết thúc quá trình di chuyển. R3D1L3U1
Dòng 2: ghi số lượng mẫu vật mà người máy thu gom được.
Bài 68: Định lý 6174
Dãy 6174 được tạo theo cách sau: số hạng đầu tiên của dãy là số nguyên dương n 1 gồm 4 chữ số (bốn chữ số
của số hạng đầu tiên này không đồng thời bằng nhau). Hai số mới a 1 và b1 được tạo thành từ số đầu tiên của
dãy. Số thứ nhất a1 có được bằng cách sắp xếp các chữ số của n 1 theo thứ tự giảm dần và Số thứ hai b 1 có
được bằng cách sắp xếp các chữ số của n 1 theo thứ tự tăng dần. số thứ nhì n 2 của dãy là hiệu a1-b1. Tiếp tục
hai số a2 và b2 được tạo thành từ n2 tương tự như a1 và b1 và số hạng n3 của dãy 6174 là hiệu a2-b2 và cứ thế
tiếp tục. dạy số kết thúc khi các số hạng của dãy bắt đầu lặp lại (nghĩa là các phần tử của dãy đôi một khác
nhau). Chữ số 0 ở đầu số (vị trí thứ nhất tính từ bên trái) vẫn có nghĩa.
Định lý 6174 phát biểu rằng số hạng cuối của dãy xây dựng như trên luôn là số 6174, chẳng hạn, xét dạy mà số
hạng đầu tiên n1 là 7815, ta có:
8751 – 1578 = 7173
7731 – 1377 = 6354
6543 – 3456 = 3087
8730 – 0378 = 8352
8532 – 2358 = 6174
Bài toán: Cho trước số hạng đầu tiên của dãy 6174. cho biết chỉ số của số hạng cuối cùng (là số hạng 6174) của dãy.
DL6174.INP DL6174.OUT
7815 6
Bài 69: Bài tóan diện tích
Cho một bảng hình chữ nhật kích thước M x N, gồm MxN hình vuông đơn vị (hình vuông đơn vị là hình vuông
có cạnh là 1 đơn vị). trên mỗi hình vuông đơn vị có một chữ cái trong bảng chữ cái tiếng anh viết hoa
Bài tóan: Tìm diện tích hình chữ nhật lớn nhất trong bảng chữ nhật nói trên mà tất cả các chữ cái trong hình vuông đơn
vị là đôi một khác nhau.
DIENTICH.INP DIENTICH.OUT
44 6
AECG
FFJH
FFFF
ABCD
Bài 70: Trộn mảng
Cho hai mảng số nguyên A và B lần lượt có N và M phần tử (0< N,M<=50000) các phần tử của hai mảng số
nguyên đều được sắp theo thứ tự không giảm
Yêu cầu: hãy tạo mảng C gồm N+M phần tử từ các phần tử của hai mảng A và B sao cho các phần tử trong
mảng C cũng có thứ tự tăng dần. (không dùng phương pháp sắp xếp nào)
Ví du:
A.inp B.inp C.out
3 2 12245
1 2
2 4
5
Bài 71: Đọan con dài nhất:
Cho chuỗi ký tự S gồm tòan chữ cái in hoa (A..Z) với độ dài không vượt quá 255. hãy tìm đọan con các ký tự
liên tiếp nhau dài nhất sao cho không có ký tự nào xuất hiện nhiều hơn một lần. trong trường hợp có nhiều
hơn một đọan con có cùng chiều dài dài nhất, hãy chỉ ra đọan xuất hiện đầu tiên trong chuỗi S.
Dữ liệu vào cho trong file SUBSTR.INP gồm 1 dòng duy nhất chứa chuỗi S
Dữ liệu ra ghi ra file SUBSTR.OUT chứa 2 số nguyên P và L tương ứng là vị trí đầu và chiều dài của đọan con dài
nhất tìm được, kí tự đầu tiên trong chuỗi S có vị trí là 1.
Ví dụ:
SUBSTR.inp SUBSTR.OUT
ABABCDAC 34

Bài 72: Cho ma trận A = (a ij) kích thước N x M, trong đó aij là các số 0 hoặc 1, hãy lập ma trận cùng kích thước B
= (bij) ở đây bij = diện tích miền chữ nhật lớn nhất trong A, chứa phần tử aij và cùng giá trí với aij.
Ví dụ với ma trận A
3 2 2 1 3 2
0 1 1 0 1 1 Ma trận B
4 4 3 4 4 2
0 0 1 1 1 0
4 4 3 4 4 2
0 0 0 1 1 0

Bài 73: Cho một lưới ô vuông đơn vị, kích thước M x N, mỗi ô chứa số 0 hoặc số 1. Hãy cho biết lưới có bao
nhiêu hình vuông có diện tích khác nhau mà 4 đỉnh của mỗi hình vuông đều thuộc ô vuông chứa số 1.
Ví dụ:
CT1_11.INP CT1_11.OUT
101 1
101
101
chương trình chỉ dùng phép đổi chỗ hai hòn bi khác màu ở hai vị trí khác nhau (Không dùng phép chèn) để xếp
lại dãy các hòn bi sao cho đầu dãy là các hòn bi trắng, giữa là các hòn bi đỏ và cuối cùng là các hòn bi xanh.
Chương trình dùng càng ít phép đổi chổ hai hòn bi càng tốt. Lưu bài làm với tên XB.PAS
Input: cho trong file XB.IN dòng đầu ghi số N (N<=10000), dòng sau lần lượt ghi N số thuộc tập {1,2,3} với qui
định số 1 là hòn bi Trắng, 2 là hòn bi Đỏ, số 3 là hòn bi Xanh, các số cách nhau ít nhất 1 dấu cách.
Output:xuất ra file XB.OUT:
Dòng đầu là phép đổi chổ hai hòn bi khác màu
Các dòng sau mỗi dòng 50 số ghi các số dãy bi đã sắp xếp theo yêu cầu đề bài, các số cùng dòng ghi
liền nhau.
Ví dụ:
XB.IN XB.OUT
10 3
2132122131 1111222233
Bài 74: Dãy số hạnh phúc:
Tại vương quốc Ba Tư xa xưa, người ta thường tổ chức các cuộc thi tìm dãy số hạnh phúc: các chàng trai, cô
gái thông minh trong thời gian ngắn nhất phải tìm ra được một dãy số hạnh phúc gồm nhiều phần tử nhất
Dãy số tự nhiên a1,a2,…ak được gọi là hạnh phúc nếu thoả mãn các điều kiện sau đây:
- Dãy trên là dãy không tăng.
- Với mọi i>1, ai hoặc là số nguyên tố hoặc phải là ước của một trong các số a1,a2,…,ai-1.
Nhiệm vụ: Em hãy lập trình để giúp các chàng trai, cô gái Ba Tư tìm ra dãy số hạnh phúc càng dài càng tốt, với
số hạng đầu tiên là N.
Dữ liệu vào cho trong file HAPPY.INP gồm một dòng duy nhất chứa số nguyên dương N
Dữ liệu ra ghi ra file HAPPY.OUT là dãy số hạnh phúc các số cách nhau 1 khoảng trắng.
Chú ý: Lưu bài bàm với tên HAPPY.PAS, kiểm tra dữ liệu vào.
Ví dụ:
HAPPY.INP HAPPY.OUT
8 85321
Bài 75: Tìm tất cả các tập con có tổng bằng M cho trước. ví dụ:
TONGM.INP TONGM.OUT
10 4024
4578023475 424
5023
505
523
55
703
73
802
82
0235
037
235
37

Bài 76: Một chuỗi con S1 có độ dài K được gọi là chuỗi con thực sự của S nếu: Nó gồm K kí tự và được lập nên
từ các kí tự của chuỗi S bằng cách rút bỏ tất cả các kí tự giống nhau trong chuỗi và không thêm một số kí tự
nào khác, Trong S1 các kí tự tuân theo trật tự đã có trong S. Yêu cầu: Hãy viết chương trình tìm chuỗi con thực
sự độ dài K của chuỗi S cho trước.
Ví dụ:
STRINGREAL.INP STRINGREAL.OUT
K=2 SI, SA, SM, IA, IM, AM
HOC SINH NAM TRUONG TRUNG HOC
Bài 77: Tìm tất cả các dãy con tăng, kể cả dãy con không liên lục.
Ví dụ:
DAYCON.INP DAYCON.OUT
N=5 4
45612 45
456
5
56
6
2
1

Bài 78: Cho một xâu gồm n cặp kí tự, mỗi cặp có kí tự ‘A’ và kí tự ‘B’. các cặp kí tự đặt trong xâu theo qui tắc
lồng vào nhau hoặc rời nhau, không có trường hợp 2 cặp kí tự giao nhau, trong mỗi cặp, kí tự ‘A’ luôn đặt bên
phải kí tự ‘B’. ví dụ: A A B B hoặc A B A B. Người ta ghi nhận thông tin của xâu bằng cách ghi số kí tự nằm trong
các cặp theo thứ tự từ trái qua phả.
Ví dụ: Xâu có 6 câp kí tự AB
A A A B A A B A B B B B ta có dãy số sau: 10 8 0 4 0 0
Lần lượt từ trái qua phải: có 10 kí tự nằm trong cặp thứ nhất, 8 kí tự trong cặp 2, 0 kí tự trong cặp 3, 4 kí
tự trong cặp 4, 0 kí tự trong cặp 5 và 0 kí tự trong cặp 6.
Yêu cầu: Từ dãy số ghi số kí tự nằm trong các cặp kí tự hãy phục hồi lại xâu kí tự đó.
CAP.INP CAP.OUT
6 AAABAABABBBB
10 8 0 4 0 0
BÀI 79: NgườI ta xây dựng một số A gồm vô hạn chữ số chỉ gồm các chữ số 0,1,2 qua một số bứơc như sau:
Bước 0: gán cho chữ số đầu tiên của A là a1 = 0;
Bước k + 1: Giả sử bước k có hình thành được m số hạng đầu của A là a1, a2, …,am thì tạI bước k +1 có
hai m số hạng đầu của A là a1,a2,…,am, b1,b2,…,bm mà vớI 1<= I <= m thì bi=(ai+1) mod 3
Như vậy các giai đoạn đầu hình thành của dãy A như sau:
0 ----- 01-----0112 ------01121220 ----- 0112122012202001 -------…..
Yêu cầu in ra chữ số thứ N của A
Ví dụ: N=4 thì an = 2; N=8 thì an = 0;
Bài 80:Cho hai số nguyên dương N và K. có bao nhiêu số nguyên dương không vượt quá N mà tổng các chữ số
của nó chia hết cho K?
Dữ liệu vào cho trong file COUNT.IN gồm nhiều dòng, mỗi dòng ghi 2 số nguyên N và K
Dữ liệu ra ghi ra file COUNT.OU gồm nhiều dòng mỗi dòng là kết quả của một bộ test trong file IN
Ví dụ:
COUNT.IN COUNT.OU
100 3 33
22 4 5
Bài 81:Cho dãy N số nguyên (3<= N <=100). Tìm 3 số hạng của dãy có tích lớn nhất và trong 3 số hạng đó có ít
nhất một số nguyên tố hoặc một số chính phương.
Ví dụ:
BASO.INP BASO.OUT
9 9 9 10
3 5 1 7 9 0 9 3 10
Bài 82 : cho một dãy n (n<=20) số nguyên dương a1, a2,…, an trên dãy ta có thể thực hiện phép biến đổi như
sau: với hai số kề nhau ta có thể thay số lớn bằng hiệu số lớn và số kia.
Hãy tìm cách đưa dãy trên về các số bằng nhau bằng các luật biến đổi trên với số lần biến đổi ít nhất (nếu có
nhiều cách chỉ cần chỉ ra một cách).
Ví dụ :
BIENDOI.INP BIENDOI.OUT
4 6
9 6 15 12 9 6 3 12
3 6 3 12
3 3 3 12
3339
3336
3333
Bài 83 : Đếm số ô vuông trên lưới.
Cho một lưới ô vuông đơn vị, kích thước m x n, mỗi ô chứa số 0 hoặc 1. hãy cho biết lưới có bao nhiêu hình
vuông có diện tích khác nhau mà 4 đỉnh của mỗi hình vuông đều thuộc ô vuông chứa số 1.
Ví dụ :
Ct1_11.inp Ct1_11.out
33 1
101
101
101
Bài 84 : Viết chương trình nhập vào biểu thức có nhiều phân số với các phép tóan (+,-,*,/), việc nhập sẽ kết
thúc khi nhập dấu « = » và đưa kết quả ra màn hình.
Ví vụ :
1 3 6 4 5 1 3 6 4 5 211
 *  /  kết quả in ra màn hình  *  / 
3 7 5 9 2 3 7 5 9 2 315
Bài 85: Với hai chữ số X và Y, khoảng cách giữa chúng được định nghĩa là một số nguyên không âm nhỏ nhất
d(X,Y) mà khi cộng thêm d(X,Y) vào một chữ số nào đó trong hai chữ số X,Y thì kết quả nhân được là một số
nguyên có chữ số hàng đơn vị trùng với chữ số còn lại. Ví dụ: d(2,5) = 3 vì 2 + 3 = 5; d(5,1) = 4 vì 1 + 4 = 5;
d(1,9) = 2 vì 9 + 2 = 11
Với hai số nguyên dương A và B có cùng số lượng chữ số, khoàng cách d(A,B) giữa hai số A và B là tổng khoảng
cách của các cặp chữ số cùng hàng tương tương. Ví dụ: d(213,419)=d(2,4) + d(1,1) + d(3,9) = 2 + 0 + 4 = 6.
Bài toán: Cho hai số X, Y có cùng số lượng chữ số N (0 < N < 100). Hãy tìm khoảng cách d(X,Y)
KHOANGCACH.INP KHOANGCACH.OUT
213 6
419
Bài 86: Cho hai số nguyên dương A và B (a < A,B <10 100). Yêu cầu: hãy so sánh giá trị của hai số. Kết quả xuất ra
file gồm 1 dòng: -1 nếu A<B; 0 nếu A = B; 1 nếu A> B
SO.INP SO.OUT
12345678900000001 1
12345678900000000
Bài 87: Viết chương trình thực hiện nhiều lần nhập mộ số nguyên N (100<N< 2 tỷ)
a. Nhập số nguyên k (1<K<17). Chuyển N sang hệ K
b. Xuất số lớn thứ nhì có chứa đúng các chữ số của N
c. Xuất các chữ số trùng nhau và vị trí trùng thuộc hàng nào trong số N
d. Nhập K (0<=K<=9). Tìm R; sao cho R lớn nhất; và trong R có K
e. Tìm M lớn nhất sao cho 5M <=N
Bài 88: Viết chương trình nhập vào 6 số nguyên dương a,b,c,d,e,f. hãy xuất biểu thức a?b?c?d?e = f với ?
thuộc {+;-;*;/} (chỉ cần một biểu thức thoả}
Bài 89: Ta coi chuỗi thông tin cần mã hoá là một chuỗi kí tự ‘A’ … ‘Z’ và khoảng trắng. Mã hoá Ceasar khoá K là
chuyển các kí tự từ ‘A’… ‘Z’ trong chuỗi đi K kí tự. Viết chương trình nhập vào một chuỗi kí tự có chiều dài N
(N<=255). Nhập vào một số nguyên K (1<K<26). Chương trình sẽ xuất ra chuỗi đã được mã hoá. Sau đó tiến
hành giải mã đưa kết quả ra màn hình. (Mở rộng bài toán N<1000)
Bài 90: Cho ma trận vuông cấp NxN chứa các số tự nhiên trong khoảng 0..255, 1<=N<=100. hãy kiểm tra một
ma trận vuông có kích thước KxK ( K<N) theo nghĩa các phần tử đối xứng nhau qua đường chéo chính của ma
trận cấp KxK thì bằng nhau.
MATSYM.INP MATSYM.OUT
N= 4, K = 3 1
7689
1230
2457
3569
Bài 91: Cho trước dãy số, hãy tìm một dãy con liền nhau cực đại có các phần tử bằng nhau.
Dữ liệu: cho trong file DAYSO.INP gồm 2 dòng
Dòng 1: ghi số N là số lượng phần tử của dãy
Dòng 2: ghi N số nguyên, mỗi số ghi cách nhau một khoảng trắng.
Dữ liệu ra cho trong DAYSO.OUT gồm một số nguyên duy nhất là chiều dài dãy con.
Bài 92: Em hãy viết chương trình kiểm chứng giả thuyết sau với n chẵn <1000: mọi số tự nhiên chẵn đều có
thể biểu diễn thành tổng của hai số nguyên tố. Kết quả xuất ra màn hình;
Bài 93: Em hãy viết chương trình kiểm chứng giả thuyết sau với n chẵn <1000: mọi số tự nhiên chẵn đều có
thể biểu diễn thành tổng của các số Fibonaci khác nhau. Kết quả xuất ra màn hình.
Bài 94: Xét bảng số nguyên dương A kích thước N x N (N<=40), A[I,j]<=100. Thay mỗi phần tử A[I,j] của bảng
bằng giá trị f(A[I,j]), trong đó y=f(x) là hàm cho số lượng lớn nhất các số nguyên tố có tổng bằng x, mỗi số sử
dụng một lần, trừ một số nguyên tố nào đó có thể sử dụng đúng 2 lần nếu cần.
Ví dụ: x=5  f(x) = 2 vì 5 = 3 + 2
X=7 f(x)=3 vì 7 = 3 +2 +2
1 không phải là số nguyên tố. Qui ước f(1)=1
ví dụ:
Bộ Test1 Bộ Test 2
INP.BL3 INB.OUT INP.BL3 INB.OUT
5 11734 4 1173
1 2 44 11 14 64355 1 2 44 11 4643
34 16 9 19 22 25271 14 34 16 9 5 5 2 5
5 24 4 43 3 47564 19 22 5 24 2 7 1 4
15 46 19 39 17 67643 4 43 3 15
35 43 36 16 9
Bài 95 (Mảng 2 chiều): Cho một bảng vuông các số nguyên kích thước N x N (2 < N < 100) mà mỗi phần tử là
một số nguyên chỉ mang một trong các giá trị sau: 0 hoặc 2 hoặc 5 hoặc 17 yêu cầu: hãy tính số lượng các
bảng vuông con cấp 2 x 2 của bảng đã cho mà các phần tử của nó chứa các số 0, 2, 5, 17
Nhập vào In ra màn hình
5 2
0 5 5 0 17
17 2 0 5 5
222222
0 5 17 0 5
02005
Bài 96: Cho hai dãy số nguyên dương a1,a2,…,an và b1,b2,…,bm sao cho:
a1+ a2, +… + an = b1 + b2 + … + bm
Hãy lập một bảng số a[1..n,1..m] gồm các số nguyên dương thoả mãn:
- Tổng các số hàng i = ai
- Tổng các cố cột j bằng bj
Làm bài lưu với tên BUILT.PAS
Dữ liệu vào cho trong file BUILT.INP gồm 3 dòng
Dòng đầu ghi 2 số nguyên dương N và M
Dòng thứ 2 ghi N số nguyên dương là phần tử ai
Dòng thứ 3 ghi M số nguyên dương là phần tử bi
Dữ liệu ra ghi file MANG.OUT là kết quả thoả mãn yêu cầu đều bài. Mỗi số cách nhau ít nhất một dấu cách.
Ví dụ:
MANG.INP MANG.OUT MANG.INP MANG.OUT
55 10000 54 0708
12345 20000 15 0 0 0 0 0000
54321 21000 0708 0000
03100 0000
00221 0000
Bài 97: Cặp số bạn bè cùng nhóm:
Cặp số (a,b) được gọi là cặp số bạn bè cùng nhóm nếu nó cùng thỏa các tính chất sau đây:
- a, b là hai số nguyên tố cùng nhau.

- Số đảo của số a là số b và ngược lại.

- Số a và b là các số có thể gồm từ 2 đến k chữ số (1<=k<=4) và được tạo thành từ n (4<=n<=9) các chữ
số của hệ thập phân cho trước khác nhau.

Dữ liệu vào cho trong file nhomnk.inp gồm:


- Dòng 1: ghi số n và k

- Dòng 2 chứa n chữ số thập phân cho trước.

Dữ liệu ra: ghi ra file capban.out gồm:


- Từ dòng thứ nhất và các dòng kế tiếp: liệt kê các cặp số đôi bạn

- Dòng cuối: ghi tổng số.

Ví dụ:
Nhomnk.inp Capban.out
42 34 43
4653 35 53
56 65
3
Bài 98: Các hoán vị cả N chữ cái đầu tiên trong bảng tiếng anh viết thường a..z được sắp theo thứ tự từ điển.
cho trước hoán vị H trong dãy trên. Tìm hoán vị P đứng sát trước hoán vị H.
Ví dụ:
Preper.inp Preper.out
3 abc
acb adcb
bacd 0
abcd
Bài 99: cho trước một xâu nhị phân có độ dài bất kỳ được đưa vào từ file văn bản. cần biến đổi xâu này về
dạng toàn số 0. phép biến đổi chỉ có thể 1 trong các loại sau:
Biến đổi xâu con 11 thành 00
Biến đổi xâu con 010 thành 000
Hãy chỉ ra một cách biến đổi xâu đã cho thành xâu toàn số 00
Bài 100: Cho một xâu văn bản gồn n dòng (n<500), mỗi dòng chứa không quá 255 kí tự. Ta gọi tần số của một
kí tự trong văn bản là số lần xuất hiện của kí tự đó trong văn bản
Yêu cầu: tìm tần số lớn nhất trong các tần số của các chữ cái (không phân biệt chữ hoa chữ thường)
Tanso.inp Tanso.out
5 40
aaaaag3475949AAAAAA&()()#$%#@@#
hfhkkljklklaaaaa08343AAAAAjjojAAAAa
hjgjhggjaaaaaj 97|+|aaaAA
ijlofj 05885-8-12112\=-09988876655 btrei
AAAAAUHHI() (&()
Bài 101: Cho dãy con gồm N phần tử. Hãy in ra tất cả các dãy con tăng dần (kể cả các dãy con không liên tục).
Ví dụ:
Daycon.inp Daycon.out
6 1
120372 1 2
1 2 3
1 2 3 7
1 2 7
1 3
1 3 7
1 7
1 2
2
2 3
2 3 7
2 7
0
0 3
0 3 7
0 7
0 2
3
3 7
7
2

Bài 102: Tương tự bài 4, nhưng in ra các dãy con có tổng bằng b cho trước.
Ví dụ:
Dcon.inp Dcon.out
6 1 2 0 7
120372 1 2 7
1 0 7 2
1 7 2
0 3 7
3 7
Bài 103: Hãy lập trình tìm tất cả các số nguyên X thỏa điều kiện sau đây (10 <=X <=65536) thỏa mãn:
- X là số nguyên tố
- X là số Fibonanci
- Có ít nhất một số nguyên tố được tạo ra khi thay đổi vị trí các chữ số của X
Ngto.out
89
233
1597
28657

Bài 102: cho số tự nhiên n. tìm tất cả các cách phân tích n thành tổng của lớn hơn hoặc bằng 2 số tự nhiên liên tiếp
(hoặc đưa ra lời phủ định).
Lientiep.inp Lientiep.out
15 7+8
------------------------------
4+5+6
------------------------------
1+2+3+4+5
------------------------------
0+1+2+3+4+5
------------------------------

Bài 105:Cho một chuỗi từ file in2.olp có độ dài m<255 kí tự số và chuỗi (không có ký tự đặc biệt và khỏang
trắng). bạn tìm xem trong đó có bao nhiêu chuổi con là chuỗi số hoặc chuỗi chữ là đối xứng, ghi lại các chuỗi
đó. Sau đó bạn hãy sắp lại chuỗi đã cho sao cho các chuỗi số tăng dần và các chuỗi chữ giảm dần tất cả ghi vào
file out2.olp.
Biết rằng chuỗi số con là tất cả các kí số liên tiếp, chuỗi chữ con là tất cả các kí tự liên tiếp.
Ví dụ:
df443gfg234432jgudit7e7733
có 4 chuỗi con đối xứng: gfg, 234432, 7, e (ghi tuần tự 4 chuỗi cũng được).
Chuỗi mới:
fd344ggf223344utjigd7e377
Bài 108: Một file văn bản có n dòng ( 3<=n<=30000), mỗi dòng là một chuỗi S có tối đa 255 kí tự, các kí tự S[i]
thuộc [‘a’… ‘z’] với 1 < =I <= length(S). trong đó, chỉ có một chuỗi S có số lần xuất hiện là một số lẻ, các chuỗi
khác có số lần xuất hiện là chẵn.
Yêu cầu: Hãy tìm chuỗi S (có số lần xuất hiện là một số lẻ) đó.
CHUOIKT.INP CHUOIKT.OUT
N=7 olympic
abcdef
bbbcc
olympic
abcdef
bbbcc
abcdef
abcdef
Bài 109: Khi viết các số tự nhiên tăng dần từ 1,2,3…n ta nhận được một dãy các số thập phân vô hạn. Hãy
tìm chữ số thứ n của dãy trên.
Dữ liệu vào cho trong file NUMBER.INP gồm một số dòng, mỗi dòng ghi một số nguyên n<10 9
Dữ liệu ra xuất ra file NUMBER.OUT với mỗi số n đọc được ghi trên một dòng tương ứng chữ số thứ n của
dãy.
Ví dụ:
NUMBER.INP NUMBER.OUT
5 5
10 1
54 3

BÀI 110 : BÀI TOÁN MA TRẬN

Người ta tạo một ma trận số nguyên 3 x 3  ( bảng số gồm 3 dòng và 3 cột), sau đó sắp xếp lại ma trận theo
một số phép biến đổi ma trận cho trước.
Các số hạng của ma trận hình thành từ trái sang phải, từ trên xuống dưới lần lượt từ số các số 1, 2, 3, 4, 5,
6, 7, 8, 9 xuất hiện trong dãy số  un cho trước (xem ví dụ).
Các phép biến đổi ma trận qui ước như sau:
Phép biến đổi 1 : Thay  các số hạng của hàng 2 bằng số hạng của hàng 2 cộng 2 lần số hạng cùng cột của
hàng 1
Phép biến đổi 2 : Thay  các số hạng của hàng 3 bằng số hạng của hàng 3 cộng 2 lần số hạng cùng cột của
hàng 2
Phép biến đổi 3 : Thay  các số hạng của cột 2 bằng số hạng của cột 2 cộng 2 lần số hạng cùng hàng của cột
1
Phép biến đổi 4 : Thay  các số hạng của cột 3 bằng số hạng của cột 3 cộng 2 lần số hạng cùng hàng của cột
Ví dụ : Xem ma trận ở giữa và các phép biến đổi ma trận tương ứng:

1 2 3 1 2 3
4 5 6 6 9 12
15 18 21 7 8 9
P2
P1
1 2 3
4 5 6
7 8 9
P4
1 4 3 P3 1 2 7
4 13 6 4 5 16
7 22 9 7 8 25

Hãy lập trình để tạo ma trận ban đầu và tìm ma trận kết quả cuối cùng sau khi thực hiện lần lượt các phép
biến đổi. Phép biến đổi sau thực hiện trên ma trận kết quả của phép biến đổi trước đó.

Dữ liệu vào :

Dữ liệu vào được lưu trên tập tin văn  bản  MATRIX.IN (hoặc nhập từ bàn phím) gồm hai dòng :
- Dòng đầu tiên ghi một số con số 1, 2, 3, 4 cách nhau một khoảng trắng. Mỗi số tương ứng một phép biến
đổi ma trận;
- Dòng tiếp theo ghi các số hạng của một dãy số un gồm nhiều số 1,2,3,4,5,6,7,8,9  ( không quá 1000 số )
cách nhau một khoảng trắng.
Dữ liệu ra:
Dữ liệu ra được lưu trên tập tin MATRIX.OUT (hoặc xuất ra màn hình) gồm 6 dòng ghi các số hạng của ma
trận 3 x 3 ban đầu sau khi hình thành theo qui tắc trên và ma trận kết quả sau khi lần lượt duyệt qua hết
tất cả các phép biến đổi ma trận .
Ví dụ: MATRIX.IN ( hoặc nhập từ bàn phím)
1 2  4 3 1
977777777888888888444446666666555555333322211
( trong dãy này có  2 số 1; 3 số 2; 4 số 3; 5 số 4; 6 số 5; 7 số 6; 8 số 7; 9 số 8; 1 số 9 )
2 3 4
5 6 7
8 9 1
 Kết quả MATRIX.OUT  ( hoặc xuất ra màn hình )
                                               
2 7 10
13 44 59
26 85 97

Bài 111 : Dãy tăng giảm tuần hoàn

Cho trước một dãy số nguyên không âm (an). ( ai <1000  với mọi i,  1£  i£ n <1000)
Dãy (an) gọi là một dãy tăng giảm tuần hoàn nếu tồn tại số k dương ( k < n ) sao cho bắt đầu từ số hạng đầu
tiên đến số hạng cuối cùng cứ k-1 lần tăng ( giảm) dần thì tiếp theo có k-1 lần giảm (tăng) dần . . ., ít nhất
có một dãy con tăng và một dãy con giảm, dãy con tăng (giảm) cuối cùng không nhất thiết kéo dài tới k-1
lần.
Ví dụ các dãy tăng giảm tuần hoàn :
1234743215678432149
12393
các dãy không tăng giảm tuần hoàn :
123456789
12345698769
Lưu ý : tăng, giảm tuyệt đối ( không bằng)
Nhiệm vụ
Hãy lập trình để nhận biết dãy số cho có phải là tăng giảm tuần hoàn (TRUE) hay không (FALSE)  ?

Dữ liệu vào

Dữ liệu vào được ghi trên tập tin v¨n b¶n DAY.INP  . Các phần tử của dãy cách nhau một khoảng trắng
hoặc kí tự xuống dòng.
Dữ liệu ra
Dữ liệu ra được ghi trên tập tin DAY.OUT gồm 2 dòng :
- Dòng đầu ghi TRUE hoặc FALSE
- Dòng thứ hai ghi số nguyên k cho trường hợp TRUE và 0 cho trường hợp FALSE.
Ví dụ
DAY.INP
1234743215678432149
DAY.OUT
TRUE
5
Bài 112: Viết chương trình tạo một dòng chữ cuộn ngang từ phải qua trái màn hình giống như một Screen
Saver trong Windows (tương tự làm cho chữ chạy từ trái qua phải; chạy theo hướng bất kỳ).
Chú ý: Làm bài lưu với tên SCROLL.PAS

Bài 113: Miền diện tích lớn nhất


Trong hình chữ nhật ABCD ở hình bên dưới, kẻ những đọan thằng ST và UV phân chia hình chữ nhật thành ba
phần (ở đây S, T, U, V thuộc cạnh của tứ giác ABCD).
Yêu cầu: Hãy viết chương trình để tính diện tích các hình tạo bởi tứ giác ABCD sau khi bị hai đọan ST và UV cắt.
Dữ liệu: cho trong file AREA.INP
Dòng đầu tiên gồm số N – số bộ test
N dòng sau ghi 16 số nguyên lần lựơt là tọa độ của các điểm A,B,C,D,S,T,U,V mỗi số viết cách nhau ít nhất một
dấu cách.
Kết quả: ghi ra file AREA.OUT
Tương ứng với mỗi bộ dữ liệu test trong file AREA.INP ghi ra 1 dòng: diện tích của mỗi miền tìm được trong bộ
test đó(có thể có 1 miền, 2 miền; 3 miền hoặc 4 miền), mỗi miền ghi diện tích chính xác tới 0.01; dãy giá trị
diện tích ghi theo thứ tự không tăng; cuối file là giá trị lớn nhất tìm được trong N bộ test.
A S U B

D T V C
Chú ý: làm bài lưu với tên AREA.PAS
Ví dụ:
AREA.INP AREA.OUT
2 26.00 24.00 14.00
0 4 16 4 0 0 16 0 4 4 8 0 15 4 10 0 15.00 10.00 3.00 2.00
-1 5 5 5 1 0 5 0 0 5 0 0 1 3 5 3 26.00
Bài 114: Hãy xây dựng dãy gồm N ký hiệu từ một bảng K ký hiệu sao cho không có hai dãy con nào liên tiếp
giống nhau. Chẳng hạn với 3 kí hiệu 1,2,3 hãy xây dựng dãy có độ dài N thỏa mãn tính chất trên.
Với N=5 thì dãy 12312 là chấp nhận được, còn các dãy 12323 và 12123 là không chấp nhận được.
Ví dụ:
CHUOI.INP CHUOI.OUT
N=10 1213123132
N=20 12131231321231213123
HD:
Độ dài L S1 S2
1 Copy(S,m-1,1) Copy(S,m,1)
2 Copu(S,m-3,2) Copy(S,m-1,2)

L Copy(S,m-2*L+1,L) Copy(S,m-L+1,L)
Bài 116: (Bảy hai không)
Cho số nguyên dương N (0<=N<=500.000). Tìm số nguyên dương S nhỏ nhất thoả mãn tính chất sau đây:
a. S>=N
b. Trong biểu diễn cơ số 10, S không chứa các chử số khác ngoài 7,2,0 và không bắt đầu bằng 0.
c. S chia hết cho N.
Dữ liệu vào cho trong file HK.INP gồm nhiều dòng mỗi dòng chứa 1 số nguyên dương
Dữ liệu ra, ghi ra file HK.OUT mỗi dòng ghi một kết quả tìm được, nếu không có kết quả hoặc dữ liệu sai thì ghi
-1.
Chú ý: làm bài lưu với tên HK.PAS
Ví dụ:
Bộ test Kết quả
3 27
-3 -1
61 70272
Bài 117: Dãy nhị phân là dãy có các phần tử chỉ nhận giá trị 0 hoặc 1, số phần tử của dãy gọi là độ dài của dãy.
Viết chương trình tìm các xâu nhị phân nhị phân có độ dài n (1<n<=10).
Dữ liệu vào cho trong file xau01.inp chỉ có một dòng duy nhất ghi số nguyên n.
Dữ liệu ra: ghi ra file xau01.out gồm n dòng, mỗi dòng ghi một số nhị phân có độ dài n, và các số này được sắp
xếp theo thứ tự tăng dần.
Chú ý: làm bài lưu với tên XAU01.PAS
Ví dụ:
XAU01.INP XAU01.OUT
3 000
001
010
011
100
101
110
111
Bài 118: Người ta xây dựng một số A gồm vô hạn chữ số chỉ gồm các chữ số 0,1 và 2 qua một số bước như
sau:
Bước 0: Gán chữ số đầu tiên của A là a1=0;
Bước k+1: Giả sử bước k đã hình thành được m số hạng đầu của A là a1,a2,…,am thì tại bước k + 1 có 2m số
hạng đầu của A là a1,a2,…,am, b1,b2,…,bm mà với 1<=i<=m thì bi=(ai+1) mod 3 (dư của phép chia ai + 1 cho 3)
Như vậy các giai đoạn đầu hình thành A như sau:
0  01  0112  01121220  0112122012202001  ….
Yêu cầu in ra chữ số thứ N của A (aN là chữ số nào?)
Chú ý: làm bài lưu với tên SEQUENCY.PAS
Dữ liệu vào cho trong file SEQUENCY.INP gồm nhiều dòng, mỗi dòng ghi một giá trị của N
Dữ liệu ra ghi ra file SEQUENCY.OUT gồm nhiều dòng, mỗi dòng ghi một giá trị aN tương ứng với giá trị N trong
SEQUENCY.INP
Ví dụ:
SEQUENCY.INP SEQUENCY.OUT
1 0
2 1
16 1
17 1
43 0
100 1
1000 2
3000000000 2
10000000000 2
1000000000000000 0
2

Bài 119: Cho dãy số N nguyên dương. Bằng cách biến đổi hai số có tính chẵn lẽ khác nhau, hãy sắp các số lẻ lên
đầu dãy, số chẵn xuống cuối dãy bằng ít phép biến đổi nhất (không được dùng phép chèn, không được dùng
cách sắp xếp)
Chú ý: làm bài lưu với tên CHANLE.PAS
Dữ liệu vào cho trong file CHANLE.INP dòng đầu ghi số nguyên N (N<=10000) dòng sau lần lượt ghi N số
nguyên dương các số cách nhau ít nhất 1 dấu cách.
Dữ liệu ra ghi ra file CHANLE.OUT
- Dòng đầu là số phép biến đổi
- Các dòng sau mỗi dòng ghi 50 số ghi các số thể hiện dãy đã được sắp theo yêu cầu đề bài, các số
cùng dòng ghi liền nhau.
Ví dụ
CHANLE.INP CHANLE.OUT
10 3
2132122131 1133112222
Bài 120: Số chuẩn
Cho một số nguyên dương S ở hệ 10, có N chữ số ( N < 21). Số S được gọi là ở dạng chuẩn, nếu thoả mãn các
điều kiện sau:
- Không chia hết cho3,
- Không chia hết cho7,
- Không chứa số 3 và số 7 trong dạng biểu diễn ở hệ 10,
- Không chứa dãy liên tiếp 3 chữ số hoặc 7 chữ số giống nhau.
Ví dụ: Các số ở dạng chuẩn: 22, 190
Các số không ở dạng chuẩn: 31, 76, 12224, 411111110
Yêu cầu: Tìm 5 số chuẩn lớn nhất nhưng nhỏ hơn N cho trước. làm bài lưu với tên SOCHUAN.PAS.
Dữ liệu vào cho trong file văn bản SOCHUAN.INP gồm một dòng duy nhất ghi số nguyên dương N.
Kết quả: ghi ra file SOCHUAN.OUT gồm 1 dòng 5 số tìm được sắp xếp theo thứ tự không giảm. trường hợp nếu
tìm không được ghi 0.
Ví dụ
SOCHUAN.INP SOCHUAN.OUT
200 188 190 191 194 199
Bài 121: Dịch chuyển trên mảng vòng
Cho dãy gồn N số nguyên từ 1 đến N. Tại thời điểm hiện tại, số i đứng tại vị trí thứ i của dãy. Sau mỗi một giây,
mỗi số lại dịch chuyển sang vị trí tiếp theo (từ vị trí k tới vị trí k+1 nếu k<N, nếu k=N thì chuyển về vị trí 1). Tìm
dãy sau T giây
Chú ý: làm bài lưu với tên MOVE.PAS
Dữ liệu cho trong file MOVE.INP gồm một dòng ghi 2 số nguyên dương N và T (1<=N<=100; 0<=T<=30000)
Kết quả: ghi ra file MOVE.OUT các số của dãy sau T giây có thứ tự từ vì trí 1 đến vị trí N
Ví dụ:
MOVE.INP MOVE.OUT
53 34512
Bài 122: Mộ số được gọi là đối xứng nếu ta đọc từ trái sang phải cũng giống như đọc từ phải sang trái ví dụ:
1234321; 22222,33, 414, 6789876,4114 là những số đối xứng, còn 1234,4124 không phải là những số đối
xứng. Một số có thể không đối xứng trong hệ 10 nhưng có thể là số đối xứng trong hệ k nào đó (1<k<11). Ví dụ
số 17 không đối xứng trong hệ 10 nhưng khi chuyển 17 sang hệ 2, hệ 3 thì là số đối xứng vì 17 = (10001) 2 và 17
= (101)4. Hãy viết chương nhập vào một số S <10000 và số n <100. Hãy tìm n số lớn hơn S đối xứng ít nhất
trong 2 hệ.
Dữ liệu vào cho trong file DOIXUNG.INP gồm 2 số S và N cách nhau 1 dấu cách.
Dữ liệu ra ghi ra file DOIXUNG.OUT là các số thỏa điều kiện, mỗi số nằm trên một dòng. Số cuối cùng là tổng
số các số nguyên tố trong N số thỏa điều kiện trên.
Ví dụ:
DOIXUNG.INP DOIXUNG.OUT
15 2 16
17
1
Bài 123: Lập ma phương
Cho trước số nguyên dương N (N lẻ). Hãy lập ma phương với N lẻ gồm các số nguyên từ 1 đến N*N
Ví dụ:
MPHUONG.INP MPHUONG.OUT
3 492
357
816
Bài 124: Số Py-ta-go bậc 3
Bộ 3 số nguyên dương (x,y,z) có tính chất x 2 + y2 = z2 gọi là bộ các số Py-ta-go một học sinh đề xuất việc tìm bộ
4 số nguyên dương (x,y,z,t) có tính chất x3 + y3 + z3 = t3 và gọi chúng là các số Py-ta-go bậc 3. ví dụ bộ 4 số
(3,4,5,6) là một bộ thoả mãn tính chất trên
Yêu cầu cho trước số nguyên dương t (t<100), hãy xác định xem có thể tìm được 3 số nguyên dương x,y,z sao
cho (x,y,z,t) là các số Py-ta-go bậc 3 hay không. Nếu có thì chỉ ra 3 số x,y,z đó.
Chú ý: làm bài lưu với tên PYTHA.PAS
Dữ liệu cho trong file PYTHA.INP có cấu trúc như sau:
 Dòng đầu tiên chứa N là số lương các số nguyên dương phải xét (N<20)
 N dòng tiếp theo, mỗi dòng chứa một số nguyên dương phải xét.
Kết quả: ghi ra file PYTHA.OUT gồm N dòng tương ứng với N số phải xét trong file PYTHA.INP nói trên. Nếu lập
phương án của số tương ứng không thể phân tích thành tổng của 3 lập phương thì dòng này ghi là -1, ngược
lại, dòng đó sẽ ghi 3 số nguyên dương mà tổng lập phương của chúng bằng lập phương của số được xét.
Ví dụ:
PYTHA.INP PYTHA.OUT
4
4 0
6 345
9 0
19 3 10 18
Bài 125: Đếm số thoả mãn tính chất
Cho 2 số nguyê K và N. Có bao nhiêu số nguyên dương không vượt quá N mà tổng các chữ số của nó chia hết
K?
Chú ý: làm bài lưu với tên COUNT.PAS
Dữ liệu vào từ file COUNT.INP gồm một dòng chứa 2 số nguyên K và N cách nhau một dấu cách.
Kết quả: ghi ra file COUNT.OUT chỉ gồm một dòng ghi số H là số lượng các số nguyên dương không vượt quá N
mà tổng các chữ số của nó chia hết cho K.
Ví dụ:
COUNT.INP COUNT.OUT
100 3 33
22 4 5
Bài 126: Viết các số của dãy số tự nhiên liên tiếp liền nhau thành một số kéo dài vô tận là
0123456789101112131415161718192021222324252627282930….
Cho trước số nguyên dương N, hỏi chữ số ở vị trí thứ N là chữ số nào?
Ví dụ:
SOHAN.INP SOHAN.OUT
15 2
Bài 127: cho dãy số gồm N số nguyên từ 1 đến N. tại thời điểm hiện tại số i đứng tại vị trí thứ i của dãy, cứ sau
mỗi giây, mỗi số lại chuyển sang vị trí tiếp theo (từ vị trí k chuyển tới vị trí k + 1 nếu N>k, nếu N=k thì chuyển
về vị trí 1. hãy tìm dãy sau T giây.
File MOVE.INP gồn 2 số N và T (1<=N<=100 ; 0<=T<=30000) ;
MOVE.INP MOVE.OUT
53 34512
Bài 128: SAN
Cho một dãy n (n<=20) số nguyên dương a1,a2,…,an. Hãy tìm cách biến đổi dãy trên về dãy tòan số 0 với ít
phép biến đổi nhất.
Dữ liệu vào cho trong file SAN.INP gồm 2 dòng
- Dòng đầu ghi số N là số phần tử của dãy
- Dòng thứ 2 ghi N số nguyên dương là phần tử ai của dãy các số cách nhau ít nhất 1 dấu cách.

Kết quả: ghi ra file SAN.OUT gồm một số duy nhất là số lần thực hiện phép biến đổi.
Ví dụ:
SAN.INP SAN.OUT
4 4
9 6 15 12
5 5
12345
5 5
62791
Bài 129 Số thân thiện
Tìm tất cả các số tự nhiên n chữ số(2<=N<20) mà khi đảo trật tự của hai chữ số đó sẽ thu được một số
nguyên tố cùng nhau với số đã cho.
Bài 130 Số cấp cộng
Tìm các số tự nhiên lẻ có ba chữ số. Ba chữ số này, theo trật tự từ trái qua phải tạo thành một cấp số
cộng.
Bài 131 Số cấp nhân
Tìm các số tự nhiên có ba chữ số. Ba chữ số này, theo trật tự từ trái qua phải tạo thành một cấp số
nhân với công bội là một số tự nhiên khác 0.
Bài 132. Chia mảng tỉ lệ 1:1
Tìm cách chia dãy số nguyên không âm a 1, a2,...,an, n > 1 cho trước thành hai đoạn có tổng các phần tử
trong mỗi đoạn bằng nhau.
Bài 133 Mảng ngẫu nhiên
Sinh ngẫu nhiên n số nguyên không âm cho mảng nguyên a.
Bài 134. Sinh ngẫu nhiên tăng
Sinh ngẫu nhiên n phần tử được sắp không giảm cho mảng nguyên a.
Bài 135. Sinh hoán vị ngẫu nhiên
Sinh ngẫu nhiên cho mảng nguyên a một hoán vị của 1..n.
Bài 136. Sinh ngẫu nhiên đều
Sinh ngẫu nhiên n phần tử cho mảng nguyên a thoả điều kiện n phần tử tạo thành k đoạn liên tiếp có
tổng các phần tử trong mỗi đoạn bằng nhau và bằng giá trị t cho trước.
Bài 137. Sinh ngẫu nhiên tỉ lệ
Sinh ngẫu nhiên cho mảng nguyên a có n phần tử tạo thành hai đoạn liên tiếp có tổng các phần tử
trong một đoạn gấp k lần tổng các phần tử của đoạn kia.
Bài 138. Sinh ngẫu nhiên tệp cấp số cộng
Sinh ngẫu nhiên một cấp số cộng có n số hạng và ghi vào một tệp văn bản có tên cho trước.
Bài 139. Sinh ngẫu nhiên mảng đối xứng
Sinh ngẫu nhiên các giá trị để ghi vào một mảng hai chiều a[1..n, 1..n] sao cho các phần tử đối xứng nhau
qua đường chéo chính, tức là
a[i, j] = a[j, i], 1 ≤ i, j ≤ N.
Bài 140. Số độ cao h
Độ cao của một số tự nhiên là tổng các chữ số của số đó. Sinh toàn bộ các số tự nhiên có tối đa ba chữ
số và có độ cao h cho trước. Ghi kết quả vào một tệp văn bản có tên cho trước.
Bài 141. Đọc dữ liệu từ tệp vào mảng đối xứng
Đọc dữ liệu kiểu nguyên từ một tệp văn bản có tên fn vào một mảng hai chiều đối xứng.
Tệp có cấu trúc như sau:
- Số đầu tiên ghi số lượng cột (và đồng thời là số lượng dòng) của mảng.
- Tiếp đến là các dữ liệu ghi liên tiếp nhau theo nửa tam giác trên tính từ đường chéo chính.
- Các số cùng dòng cách nhau ít nhất một dấu cách.
Thí dụ: 3 1 2 3 4 6 8 sẽ được bố trí vào mảng 3  3 như sau:
1 2 3
2 4 6
1 1 1 1 0 0 1 1 1
3 6 8
0 0 0 0 0 0 1 1 1
Bài 142. Đếm tàu
1 1 0 0 0 0 0 0 0
Một tệp văn bản có tên fn có ghi sơ đồ một vùng biển hình chữ nhật
chiều ngang 250 kí tự, chiều dọc (số dòng) không hạn chế. Trên biển 1 1 0 0 1 1 0 0 1
có các con tàu hình chữ nhật chứa các kí tự 1, vùng nước được biểu 5 tàu
thị qua các kí tự 0. Biết rằng các con tàu không dính nhau. Hãy đếm số
lượng tàu.
Ví dụ, hình bên có 5 tàu.
Bài 143. Bộ Tú lơ khơ
Lập chương trình hiển thị trên màn hình các quân bài Tú lơ khơ gồm Rô, Cơ, Pích, Nhép theo quy định
quân A mang mã số 1 và có 1 hình đơn vị, các quân mã số i từ 2 đến 10 có i hình đơn vị, các quân J, Q
và K lần lượt có 11, 12 và 13 hình đơn vị tương ứng. Hình đơn vị gồm bốn loại kí tự có mã ASCII tương
ứng như sau:

 (Rô) : #4,  (Cơ) : #3,  (Pích): #6,  (Nhép): #5.


8 A Q
   
    
    
   
   
8 A Q

Ba quân bài Tú lơ khơ


Bài 144. Bảng nhảy
Bảng nhảy bước b, bậc k là một tấm bảng có đặc tính kì lạ sau đây: nếu bạn viết lần lượt lên bảng n số
nguyên thì sau khi viết số thứ i, số thứ (i – b) đã viết trước đó sẽ được tăng thêm k đơn vị mà ta gọi là
nhảy số.
Với mỗi cặp số nguyên dương b và k cho trước hãy lập trình để biến màn hình máy tính của bạn thành
một bảng nhảy sau đó thử viết lên tấm bảng đó để nhận được dãy N số tự nhiên đầu tiên 1 2 ... N với
mỗi N cho trước.
Thí dụ, để thu được dãy số 1 2 ... 10 trên bảng nhảy bước b = 3 bậc k = 6 bạn cần viết dãy số sau:
-5 -4 -3 -2 -1 0 1 8 9 10
Bài 145. Cụm
Một cụm trong một biểu thức toán học là đoạn nằm giữa hai dấu đóng và mở ngoặc đơn (). Với mỗi
biểu thức cho trước hãy tách các cụm của biểu thức đó.
Dữ liệu vào: Tệp văn bản CUM.INP chứa một dòng kiểu xâu kí tự (string) là biểu thức cần xử lí.
Dữ liệu ra: Tệp văn bản CUM.OUT dòng đầu tiên ghi d là số lượng cụm. Tiếp đến là d dòng, mỗi dòng
ghi một cụm được tách từ biểu thức. Trường hợp gặp lỗi cú pháp ghi số – 1.
Thí dụ:
CUM.INP CUM.OUT

x*(a+1)*((b-2)/ 4
(c+3)) (a+1)
(b-2)
(c+3)
((b-2)/(c+3))
Bài 146 abc - sắp theo chỉ dẫn
Cho xâu S gồm N kí tự tạo từ các chữ cái 'a'..'z'. ta gọi S là xâu mẫu. Từ xâu mẫu S này người ta tạo ra
N xâu thứ cấp bằng cách dịch xâu S qua trái i vị trí theo dạng vòng tròn, tức là i kí tự đầu xâu lần lượt
được chuyển về cuối xâu, i = 0, 1,…, N - 1. Như vậy xâu thứ cấp với i = 0 sẽ trùng với xâu mẫu S. Giả sử
ta đã sắp tăng N xâu thu được theo trật tự từ điển. Hãy tìm xâu thứ k trong dãy.
Tên chương trình: abc.pas.
Dữ liệu vào: tệp văn bản abc.inp có cấu trúc như sau:
- Dòng thứ nhất chứa hai số tự nhiên N và k cách nhau qua dấu cách,
6  N  500, 1  k  N. N cho biết chiều dài xâu S, k cho biết vị trí của xâu thứ cấp trong dãy được
sắp tăng theo thứ tự từ điển.
- Dòng thứ hai: xâu mẫu S.
Dữ liệu ra: tệp văn bản abc.out gồm một dòng chứa xâu thứ k trong dãy được sắp.
Thí dụ:
abc.inp abc.out
63 cdabde
Dabdec
Bài 147. Từ chuẩn
Một từ loại M là một dãy các chữ số, mỗi chữ số nằm trong khoảng từ 1 đến M. Số lượng các chữ số có
mặt trong một từ được gọi là chiều dài của từ đó. Từ loại M được gọi là từ chuẩn nếu nó không chứa
hai khúc (từ con) liền nhau mà giống nhau.
a) Với giá trị N cho trước, hiển thị trên màn hình một từ chuẩn loại 3 có chiều dài N.
b) Với mỗi giá trị N cho trước, tìm và ghi vào tệp văn bản tên TUCHUAN.OUT mọi từ chuẩn loại 3 có
chiều dài N.
1  N  40000.
Thí dụ:
1213123 là từ chuẩn loại 3, chiều dài 7.
1213213 không phải là từ chuẩn vì nó chứa liên tiếp hai từ con giống nhau là 213.
Tương tự, 12332 không phải là từ chuẩn vì chứa liên tiếp hai từ con giống nhau là 3.
Ví dụ: Với N = 16, M = 3, có tổng cộng 798 nghiệm, tức là 798 từ chuẩn chiều dài 16 tạo từ các chữ số 1, 2 và 3.
Dưới đây là 20 nghiệm đầu tiên tìm được theo thuật toán.
Nghiem thu 1: 1213123132123121
Nghiem thu 2: 1213123132123213
Nghiem thu 3: 1213123132131213
Nghiem thu 4: 1213123132131231
Nghiem thu 5: 1213123132131232
Nghiem thu 6: 1213123132312131
Nghiem thu 7: 1213123132312132
Nghiem thu 8: 1213123132312321
Nghiem thu 9: 1213123212312131
Nghiem thu 10: 1213123212312132
Nghiem thu 11: 1213123212313212
Nghiem thu 12: 1213123212313213
Nghiem thu 13: 1213123212313231
Nghiem thu 14: 1213123213121321
Nghiem thu 15: 1213123213121323
Nghiem thu 16: 1213123213231213
Nghiem thu 17: 1213123213231232
Nghiem thu 18: 1213123213231321
Nghiem thu 19: 1213212312131231
Nghiem thu 20: 1213212312131232

data.inp
Bài 148. Data Tinh tong cua 12 so sau day:
Trong file văn bản data.inp chứa dòng dữ liệu đầu tiên có nội 1 -2 3 -4 5 6
dung 7 8 9 10 -11 -12
"Tinh tong cua n so sau day:", data.out
trong đó n là một số nguyên dương cho trước. Tong cua 12 so:
Tiếp đến là n số nguyên ghi cách nhau qua dấu cách. +1 -2 +3 -4 +5 +6 +7 +8 +9 +10 -11 -12 = 20
Yêu cầu: xác định giá trị của n và tính tổng của n số trong file
data.inp rồi ghi kết quả vào output file data.out theo định dạng cho trong bảng.

Bài 149. Xâu con chung


Hãy tìm chiều dài lớn nhất k trong số các xâu con chung của hai xâu x và y.

Thí dụ, x = "xaxxbxcxd", y = "ayybycdy", chiều dài của xâu con chung dài nhất là 4 ứng với xâu "abcd".
Bài 150. Đoạn chung
Hãy tìm chiều dài lớn nhất k trong số các đoạn chung của hai xâu x và y.
Thí dụ, x = "xabcxxabcdxd", y = "aybcyabcdydy" có chiều dài của đoạn chung dài nhất là 4 ứng với đoạn
"abcd".

Bài 151: Viết chương trình nhập vào ngày, tháng, năm ở dạng dd/mm/yyyy. Yêu in ra màn hình thứ của ngày
đó. Ví dụ: nhập 10/12/1985  kết quả: Thứ Ba.

 26m  2 d  c  
Chú ý:   k  d        2c  mod 7 với tháng giêng là 11, tháng hai là 12, tháng ba là 1,…
 10  4  4 
tháng 12 là 10.

You might also like