Tải bản đầy đủ (.docx) (5 trang)

Bài tập xâu nâng cao luyện HSG

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 (100.34 KB, 5 trang )

Bài Tập
1. Viết chương trình nhập vào chuỗi S. Sau đó đổi chuỗi S thành chuỗi in hoa, in thường, in dạng tên riêng.
2. Viết chương trình nhập vào chuỗi ngày, tháng, năm theo dạng dd/mm/yy hoặc dd/mm/yyyy, sau đó cho biết
ngày đó là thứ mấy trong tuần.
Hướng dẫn cách tính thứ trong tuần:
 Nam:= 1900 + (Nam MOD 1900); {Quy đổi Nam về dạng yyyy}
 Nếu Thang <3 thì Thang:= Thang + 12; và Nam:= Nam -1;
 Thu=ABS (Ngay+2*Thang+3* (Thang+1) DIV 5+Nam+Nam DIV 4) MOD 7
(Khi đó Thu = 0  Chủ nhật; Thu = 1  Thứ hai; …)
Lưu ý: Cơng thức tính trên chỉ đúng từ ngày 01/03/1900 trở đi.
3. Nhập vào một xâu s khác rỗng và thực hiện chuẩn hoá xâu, tức là:
a) Xoá các dấu cách thừa
b) Chuyển những kí tự đầu từ thành chữ hoa, những kí tự khác thành chữ thường.
4. Nhập vào một xâu x khác rỗng và thông báo xâu đó có phải là xâu đối xứng hay khơng?
Xâu đối xứng nếu nó bằng chính xâu đảo của nó. Vậy cách đơn giản nhất là ta sẽ xây dựng xâu đảo của x
và kiểm tra xem nó có bằng x không. Để xây dựng xâu đảo của x, cách đơn giản nhất là cộng các kí tự của
x theo thứ tự ngược (từ cuối về đầu).
5. Cho biết chuỗi vừa nhập có tuần hồn hay khơng? Nếu là chuỗi tuần hồn thì cho biết chu kỳ tuần hồn
(chuỗi abcabc tuần hoàn với chu kỳ là 3).
6. Nhập vào một xâu s và đếm xem nó có bao nhiêu từ. Từ là một dãy các kí tự, cách nhau bởi dấu cách?
Cách đếm từ đơn giản nhất là đếm dấu cách: nếu s[i] là kí tự khác cách và s[i-1] là kí tự cách thì chứng tỏ
s[i] là vị trí bắt đầu của một từ. Chú ý là từ đầu tiên của xâu khơng có dấu cách đứng trước.
7. Viết chương trình nhập vào xâu S từ bàn phím khơng q 100 kí tự. Tính và xuất ra màn hình số lượng chữ
cái tiếng anh có trong xâu (Khơng phân biệt chữ hoa và thường).
8. Viết chương trình nhập vào xâu S1 từ bàn phím khơng q 50 kí tự. Tạo ra xâu S2 sau khi loại bỏ các kí tự
số. Xuất xâu S2 sau khi loại bỏ kí tự số ra màn hình.
9. Viết chương trình nhập vào xâu S từ bàn phím khơng q 50 kí tự. Đếm số lần xuất hiện của ký tự số có
trong xâu S , xuất kết quả đếm được ra màn hình.
10. Nhập vào một xâu s và in ra các từ của nó (Từ là một dãy các kí tự, cách nhau bởi dấu cách). Xâu có bao
nhiêu từ là đối xứng?
Có nhiều cách để tách một xâu thành các từ. Cách đơn giản nhất tiến hành như sau:


1) Bỏ qua các dấu cách cho đến khi gặp một kí tự khác cách (hoặc hết xâu).
2) Ghi các kí tự tiếp theo vào xâu tạm cho đến khi gặp dấu cách hoặc hết xâu, khi đó ta được 1 từ.
3) Nếu chưa hết xâu thì quay lại bước 1.
Mỗi khi tìm được một từ, ta ghi ln nó ra màn hình, nếu từ đó là đối xứng thì tăng biến đếm. Ta cũng có thể
lưu các từ tách được vào một mảng nếu bài tập yêu cầu dùng đến những từ đó trong các câu sau.
MỘT SỐ ĐỀ THI HSG
Bài 1: Cho một xâu X có chiều dài N ký tự. Xâu chỉ gồm hai loại ký tự ‘A’ và ‘B’. Một xâu Y được gọi là xâu
con của X nếu thoả mãn các tính chất sau:
+Y là một đoạn ký tự liên tiếp của xâu X.
+ Có chiều dài L<=M (M cho trước)
+Có K ký tự ‘A’
Ví dụ: X là: BABABAABBB
Với M=5 và K=3 thì xâu ABAA là một xâu con


Yêu cầu: Hãy tìm số lượng xâu con của X
Dữ liệu vào: cho trong file văn bản XAUCON.INP có cấu trúc: gồm nhiều dòng
Dòng 1: chứa 3 số N M K ( 0Trong đó: N là độ dài của xâu X, M là chiều dài lớn nhất của các xâu con Y, K là số lượng ký tự ‘A’.
Các số
ghi cách nhau ít nhất một dấu cách.
Dịng 2: Chứa n ký tự của xâu X. Các ký tự viết liền nhau
Dòng 3: chứa các dấu ********
Dữ liệu ra: Ghi ra file văn bản có tên: XAUCON.OUT theo cấu trúc
Dịng đầu ghi các xâu con thỏa mãn điều kiện
Dòng tiếp theo ghi tổng số xâu con
Ví dụ:
XAUCON.INP
XAUCON.OUT
532

AA AAB AAB AAB AAB
AABAA
tong so xau la: 5
**********
AABA ABAA AABAA AABAA AABAA AABAA
10 5 3
AABAA AABAA
AABAAAABAA
tong so xau la: 88
**********
Bài 2: Cho xâu S có độ dài N9N<100). Xâu S chỉ chứa các k tự số ‘0’…’9’.
Yêu cầu: Hãy viết chương trình tìm xâu S1 bằng cách hoán vị các k tự số trong xâu S sao cho xâu S1 có giá
trị nhỏ nhất lớn hơn S.
Đữ liệu vào: Cho trong tệp tin so.inp, gồm 1 dòng ghi xâu S.
Kết quả: Ghi trong tập tin so.out, gồm 1 dịng ghi kết quả vừa tìm được.
Ví dụ:
Dữ liệu vào: (So.inp) Kết quả: (so.out)
‘1234’ ‘1324’
Bài 3:
Xét tập các chữ cái La tinh in hoa sau:
ABCDEFGHIJKLMNOPQRSTUVWXYZ
Một số chữ cái có các tính chất đặc biệt như sau:
Đối xứng gương qua trục đối xứng đứng, ví dụ chữ cái A có tính chất như vậy. Ngồi chữ A cịn có các ký tự
"H","I","M","O","T","U","V","W","X","Y".
Đối xứng gương qua trục đối xứng ngang, ví dụ chữ cái B có tính chất như vậy. Cùng với B cịn có các ký tự
"C","D","E","H","I", "K","O","X".
Khơng đổi khi xoay ký tự 1800, ví dụ chữ S. Các ký tự "H","I","N","O","X","Z" cũng có tính chất này.
Một xâu có tính chất đặc biệt nếu như mỗi ký tự của xâu đều có tính chất đặc biệt đó.
u cầu: Với xâu cho trước không quá 250 ký tự, hãy xác định xâu có tính chất a), b) hay c) hay không?
Dữ liệu vào: Cho trong file DOIXUNG.INP, gồm một dịng chứa một xâu kí tự.

Dữ liệu ra: Xuất ra file văn bản DOIXUNG.OUT theo định dạng sau: Nếu xâu đã cho khơng có tính chất
đặc biệt, ghi NO. Nếu xâu đã cho có tính chất đặc biệt, thì:
Dịng đầu ghi YES
Dòng thứ hai ghi số 1 nếu xâu đã cho có tính chất a); ghi số 2 nếu xâu đã cho có tính chất b); ghi số 3 nếu xâu
đã cho có tính chất c); ghi số 0 nếu xâu đã cho có cả 3 tính chất trên.
Ví dụ:
DOIXUNG.IN DOIXUNG.OU
DOIXUNG.IN DOIXUNG.OU
P
T
P
T
YES
HELLO
NO
OTO
1



Bài 4: Viết chương trình nhập vào một xâu và đếm số lần xuất hiện của các chữ cái trong xâu đó. Hiển
thị ra màn hình kí tự nào có số lần xuất hiện lớn nhất, bé nhất.
Bài 5: Mã hố văn bản
Bài tốn sau mơ tả một thuật tốn mã hố đơn giản (để tiện ta lấy ví dụ tiếng Anh, các bạn có thể mở rộng cho
tiếng Việt):

Tập hợp các chữ cái tiếng Anh bao gồm 26 chữ cái được đánh sô thứ tự từ 0 đến 25 như sau:
0 1 2 3 4 5 6 7 8 9 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
a b c d e f g h i j k l m n o p q r s t u v w x y Z

Quy tắc mã hoá một ký tự như sau (lấy ví dụ ký tự X):

- Tìm số thứ tự tương ứng của ký tự ta được 23
- Tăng giá trị số này lên 5 ta được 28
- Tìm số dư trong phép chia số này cho 26 ta được 2
- Tra ngược bảng chữ cái ta thu được C.
a. Sử dụng quy tắc trên để mã hố các dịng chữ sau:

PEACE
HEAL THE WORLD
I LOVE SPRING
b. Hãy tìm ra quy tắc giải mã các dịng chữ sau:
N FR F XYZIJSY
NSKTVRFYNHX
MFSTN SFYNTSFQ ZSNBJVXNYD
Bài 6:
Mã hóa bức thư.
Để mã hóa một bức thư người ta đưa ra qui tắc như sau:
- Mộ mã được phép sử dụng trong thư là ASCII hoặc Unicode, chỉ dùng chữ thường bắt đầu là a
(#97) đến z (#122)
-

Mỗi kí tự sẽ được tăng thêm 3, riêng ba kí tự x, y, z thì được thay bằng a, b, c.

-

Dãy kí tự được viết liền nhau dài khơng q 200 kí tự.
Hãy lập chương trình tạo ra dãy mã hóa và giải mã theo quy luật đã cho.
Dữ liệu vào cho bằng file văn bản Mahoa.inp có 2 dịng, trong đó dịng 1 chứa nội dung cần mã
hóa, dịng 2 là ãy mã cần dịch.

Dữ liệu ra cho bởi file Mahoa.out gồm 2 dòng tương ứng kết quả từng câu.

Bài 7: Mã hoá và giải mã

Theo quy tắc mã hoá ở bài trên (33/2000), hãy viết chương trình cho phép:
- Nhập một xâu ký tự và in ra xâu ký tự đã được mã hóa
- Nhập một xâu ký tự đã được mã hoá và in ra xâu ký tự đã được giải mã.
Ví dụ khi chạy chương trình:


Nhap xau ky tu:
PEACE 
Xau ky tu tren duoc ma hoa la:
UJFHJ
Nhap xau ky tu can giai ma:
FR 
Xau ky tu tren duoc giai ma la:
AM_
Bài 8: Mã hoá theo khoá
Cho trước khoá là một hoán vị của n số (1, 2, ..., n). Khi đó để mã hố một xâu kí tự ta có thể chia xâu
thànhtừng nhóm n kí tự (riêng nếu nhóm cuối cùng khơng đủ n kí tự thì ta coa thể thêm các dấu cách
vào sau cho đủ) rồi hốn vị các kí tự trong từng nhóm. Sau đó, ghép lại theo thứ tự các nhóm ta được
một xâu đã mã hố.
Chẳng hạn: với khố 3241 (n=4) thì ta có thể mã hố xâu 'english' thành 'gnlehs i'.
Hãy viết chương trình mã hố một xâu kí tự cho trước.
Bài 9: Dãy số nguyên
(Dành cho học sinh THCS)
Dãy các số tự nhiên được viết ra thành một dãy vô hạn trên đường thẳng:
1234567891011121314..... (1)
Hỏi số ở vị trí thứ 1000 trong dãy trên là số nào?

Em hãy làm bài này theo hai cách: Cách 1 dùng suy luận logic và cách 2 viết chương trình để tính tốn
và so sánh hai kết quả với nhau.
Tổng qt bài tốn trên: Chương trình u cầu nhập số K từ bàn phím và in ra trên màn hình kết quả là
số nằm ở vị trì thứ K trong dãy (1) trên. Yêu cầu chương trình chạy càng nhanh càng tốt.



×