You are on page 1of 10

BÀI TẬP VỀ XÂU CƠ BẢN

X001. Tổng chữ số


Yêu cầu: Cho một số nguyên dương X. Yêu cầu: H~y tính tổng c|c chữ số của số nguyên dương
X.
Dữ liệu: Một dòng l{ số nguyên dương X (X < 10100)
Kết quả: Ghi tổng c|c chữ số của X.
INPUT OUTPUT
123 6
X002. Số gánh
Số g|nh một l{ số có từ ba chữ số trở lên m{ gi| trị của chữ số đầu bằng gi| trị của chữ số
cuối; số g|nh hai l{ số có từ năm chữ số trở lên m{ gi| trị của hai chữ số đầu bằng gi| trị của
hai chữ số cuối; số g|nh ba l{ số có từ bảy chữ số trở lên m{ gi| trị của ba chữ số đầu bằng gi|
trị của ba chữ số cuối;…
Ví dụ: 121 l{ số g|nh một.
47598547 l{ số g|nh hai.
6375876566637 l{ số g|nh ba.
Yêu cầu: Viết chương trình kiểm tra một số l{ số g|nh mấy? Nếu không phải l{ số g|nh thì in
ra -1.
Dữ liệu vào: Gồm 1 dòng duy nhất chứa một số nguyên (số chữ số <100).
Dữ liệu ra: ghi một số l{ gi| trị g|nh của số đó, hoặc -1 nếu không phải l{ số g|nh.
INPUT OUTPUT
121 1
123 -1
47598547 2
X003 - Tách số 1
Yêu cầu: Cho một x}u kí tự bất kì (gồm cả chữ v{ số). Viết chương trình t|ch c|c phần l{ số
của x}u đó v{ in ra m{n hình c|c số t|ch được.
Dữ liệu: Một dòng là chuỗi kí tự S có độ d{i nhỏ hơn 1000 ký tự bao gồm c|c ký tự la tinh v{
c|c chữ số.
Kết quả: L{ c|c số trong chuỗi ký tự S.
INPUT OUTPUT
tmath12centre688 12 688
X004 - Tách số 2
Yêu cầu: Cho một x}u kí tự bất kì (gồm cả chữ v{ số). Viết chương trình t|ch c|c phần l{ số
của x}u đó v{ đưa v{o mảng số. Sắp xếp mảng số theo thứ tự tăng dần. In ra mảng số vừa sắp
xếp
Dữ liệu: Một dòng là chuỗi kí tự S có độ d{i nhỏ hơn 1000 ký tự bao gồm c|c ký tự la tinh v{
c|c chữ số.
Kết quả: C|c số có trong x}u S sau khi sắp xếp.
INPUT OUTPUT
abcd123ab45c56cdsagfsgh37 37 45 56 123
X005. Chữ số chẵn
Yêu cầu: Cho số nguyên n, h~y viết chương trình đếm số chữ số chẵn trong n.
Dữ liệu: Số nguyên dương n ( n <= 10 ^ 100000 )
Kết quả: In ra kết quả b{i to|n.
INPUT OUTPUT
123456 3
X006. Mảng xâu
Cho mảng A gồm N phần tử, mỗi phần tử l{ một x}u kí tự (chỉ gồm chữ c|i v{ chữ số) có độ d{i
không qu| 15 v{ được đ|nh số từ 1 đến N ( 2 < N < 50 ).
H~y sắp xếp c|c phần tử chỉ gồm chữ số của mảng A theo thứ tự tăng dần.
INPUT:
- Dòng thứ nhất ghi số nguyên dương N. ( 2 < N < 50 )
- Dòng thứ hai ghi N phần tử A1, A2, .... , An.
OUTPUT: In ra mảng A sau khi đ~ sắp xếp.
INPUT OUTPUT
5 12 UHC1L8D 278 fd52JR2 vyeXFPIT
278 UHC1L8D 12 fd52JR2 vyeXFPIT

X007. Tên Thiêng


Thời xa xưa, ở một bộ tộc cổ đại giữ tập tục đặt tên cho những đứa trẻ mới sinh theo tên
Thiêng của gia đình với hi vọng chúng sẽ được thần linh phù hộ, hạnh phúc, khỏe mạnh v{ có
thể chống lại c|c thế lực đen tối, ma quỷ xung quanh. Mỗi gia đình sẽ có một tên Thiêng v{ từ
tên đó m{ đặt tên cho c|c th{nh viên trong gia đình theo quy tắc sau:
- Tên của c|c th{nh viên phải l{ 1 x}u con gồm 1 hoặc nhiều kí tự liên tiếp nhau của tên
Thiêng. ( Tên của c|c th{nh viên trong gia đình không được trùng nhau v{ không trùng với tên
Thiêng)
Ví dụ: Tên Thiêng của gia đình l{ "abab" thì tên của c|c th{nh viên trong gia đình sẽ l{ "a" ,
"ab" , "bab" , "ba" , ... ( c|c tên không được đặt l{ "aa" , "bb" , ... ).
Yêu cầu: Cho một tên Thiêng, yêu cầu in ra số lượng tên tối đa có thể đặt.
INPUT:
- Một dòng duy nhất l{ một x}u kí tự l{ tên Thiêng của gia đình.
OUTPUT: In ra kết quả b{i to|n.
INPUT OUTPUT
abab 6
X008. Mật khẩu
Yêu cầu: Cho một mật khẩu l{ một chuỗi c|c kí tự. H~y đ|nh gi| độ bảo mật của mật khẩu đó.
Biết một mật khẩu hợp lệ có ít nhất 5 kí tự, bao gồm chữ c|i v{ chữ số (không ph}n biệt chữ
thường hay in hoa).
Nếu mật khẩu hợp lệ in ra độ d{i của chuỗi l{ độ bảo mật của mật khẩu.
Nếu không in ra "Error!".
Dữ liệu: Một dòng là xâu kí tự S có độ d{i nhỏ hơn 1000 ký tự.
Kết quả: Độ bảo mật của mật khẩu hoặc "Error!".
INPUT OUTPUT
123456789 Error!
s64gs6h4bt61t4g84s164g6bsa4bt6a4h6t44ha6sb at6b464at16te6ae1t Error!

252g5v4v4145g4wy44y4544b44g4gd4byw345644748w84444rs4h4d4gkf44e 105
43634635rtetteteryegfgdfhdtttthhhhh44s554d4
4SD456H6B4R6Y4A4G41AS64YBA64BAa4g4w4464w4fs4h35A4385787484SFHD 243
45HD4GSGSGABbjskghanhrAYBRpbyfaiohabvgabjhgbskgvhavhfovwrovwhe
sbhgk846366436344G6S4GDGA6W7TN6WET7G6ABT16AYB86E7Y6ERYM1M7A687
T68EN768SY6SYN1SNYY78NW7ANT8WTB7dsbhkshgbsbbsrny61y8sybsy
fsagbawvr7534653HEUTWbg?SRgvwgeygwetveyiuui45354783917y8323bgD Error!
NYANTRTANRAYNYEYn?eyyneyV
###|+_+|### Error!
52397546667262675917747536436347548736426363636 Error!
Hkhdjgisnhbhhgvsvtwevwshgnwvwhntwuhtwvtugwtdhjdhgdhgsgnskhvihv Error!

X009. Số kí tự hoa
Yêu cầu: Viết chương trình đếm c|c ký tự hoa trong x}u S cho trước.
Dữ liệu: Một dòng là chuỗi kí tự S có độ d{i nhỏ hơn 1000 ký tự bao gồm c|c ký tự la tinh v{
c|c chữ số.
Kết quả: L{ số lượng chữ hoa trong chuỗi ký tự S.
INPUT OUTPUT
acAbDAB 4

X010. So sánh số
Yêu cầu: Nhập v{o 2 số, so s|nh 2 số
Dữ liệu nhập:
- Dòng 1 ghi số a có số chữ số cỡ 1000 chữ số
- Dòng 1 ghi số b có số chữ số cỡ 1000 chữ số
Dữ liệu xuất:
- In ra 1 nếu a>b
- In ra 0 nếu a=b
- In ra -1 nếu a<b
INPUT OUTPUT
123456 1
45
X011. Xâu con 1
Yêu cầu: Viết chương trình kiểm tra x}u S1 có trong xâu S hay không.
Dữ liệu: Gồm 2 dòng:
Dòng đầu tiên là xâu S (0 < length(S) ≤ 2000).
Dòng thứ 2 l{ x}u S1 (0 < length(S1) ≤ length(S)).
Kết quả: in ra vị trí của x}u S1 có trong x}u S, nếu không có thì in ra NO.
INPUT OUTPUT
abcababababa 4
ba

X012. Xâu con 2


Yêu cầu: Viết chương trình đếm số lần xuất hiện của x}u S1 trong x}u S.
Dữ liệu: Gồm 2 dòng:
Dòng đầu tiên là xâu S (0 < length(S) ≤ 2000).
Dòng thứ 2 l{ x}u S1 (0 < length(S1) ≤ length(S)).
Kết quả: Số lần xuất hiện của x}u S1 trong x}u S.
INPUT OUTPUT
abaab 2
ab
X013. Xóa chữ số chẵn
Yêu cầu: Nhập v{o từ b{n phím 1 số nguyên N ( N <= 10100). H~y viết chương trình Xóa đi c|c
chữ số chẵn của số đó. Đếm xem số còn lại sau khi xóa có bao nhiêu chữ số?
Dữ liệu: 1 dòng chứa số nguyên N ( N <= 10100)
Kết quả: Số chữ số của số nguyên N sau khi xóa đi c|c chữ số chẵn
INPUT OUTPUT
102312 3
X014. In ra xâu ngược
Yêu cầu: Nhập v{o từ bàn phím 1 xâu S In ra xâu S theo thứ tự ngược lại.
Dữ liệu: 1 dòng chưa x}u kí tự S.
Kết quả: L{ x}u ngược lại của x}u S.
INPUT OUTPUT
abc cba
X015. Xóa kí tự trong xâu
Yêu cầu: Viết chương trình xóa ký tự Ch xuất hiện trong x}u S. In ra xâu S sau khi xóa đi kí tự
ch
Dữ liệu:
 Dòng 1 là chuỗi kí tự S có độ d{i nhỏ 100 ký tự,
 Dòng 2 l{ ký tự Ch.
Kết quả: Là xâu S sau khi xóa đi kí tự ch
INPUT OUTPUT
ababcaca bbcc
a

X016. Số đối xứng


Yêu cầu: Nhập v{o từ b{n phím 1 số nguyên N ( N <= 10100). H~y viết chương trình Xóa đi c|c
chữ số chẵn của số đó. Kiểm tra số còn lại có phải số đối xứng không?
Dữ liệu: 1 dòng chứa số nguyên N ( N <= 10100)
Kết quả: in ra YES nếu l{ số đối xứng, NO nếu ngược lại.
INPUT OUTPUT
12323641 YES
X017. Xóa kí tự trùng nhau trong xâu
Yêu cầu: Nhập v{o từ b{n phím 1 xâu S . Viết chương trình xóa c|c kí tự trùng nhau trong
xâu S. In ra xâu S sau khi xóa đi c|c kí tự trùng nhau.
Dữ liệu: 1 dòng chưa x}u kí tự S.
Kết quả: Là xâu S sau khi xóa đi c|c kí tự trùng nhau
INPUT OUTPUT
aababcac abc
X018. N0619C - Chuẩn hóa xâu Họ và tên
Yêu cầu: Viết chương trình nhập v{o chuỗi kí tự Họ v{ tên. H~y chuẩn hóa chuỗi ký tự Họ v{
tên sao cho ký tự đầu mỗi từ th{nh in HOA v{ mỗi từ c|ch nhau bằng một khoảng trắng
Dữ liệu: Một dòng l{ chuỗi ký tự S (0 < length(S) ≤ 2000).
Kết quả: In ra chuỗi Họ v{ tên sau khi chuẩn hóa.
INPUT OUTPUT
hOAng Ngoc AN Hoang Ngoc An
X019. Thay thế xâu
Yêu cầu: Viết chương trình nhập v{o một văn bản l{ một chuỗi kí tự S . H~y thay thế tất cả c|c
cụm kí tự S1 bằng cụm kí tự S2 (X}u ký tự S2 sau khi đ~ được thay thế v{o thì không được
tham gia v{o qu| trình tìm kiếm v{ thay thế tiếp nữa)
Dữ liệu: Gồm 3 dòng:
Dòng đầu tiên l{ chuỗi ký tự S (0 < length(S) ≤ 2000).
Dòng thứ 2 l{ cụm kí tự S1 (0 < length(S1) ≤ length(S)).
Dòng thứ 3 là cụm kí tự S2 (0 < length(S2) ≤ length(S)).
Kết quả: L{ chuỗi kí tự S sau khi thay thế cụm kí tự S1 bằng cụm kí tự S2
INPUT OUTPUT
Toi di hoc ve Toi di lam ve
hoc
lam
acbacbacb acbabacbabacbab
b
bab
X020 - Số kí tự phân biệt 2
Yêu cầu: Viết chương trình nhập v{o một văn bản l{ một chuỗi kí tự bao gồm chữ c|i la tinh .
H~y in ra số lần xuất hiện của mỗi chữ c|i trong chuỗi (không ph}n biệt chữ hoa chữ thường).
Dữ liệu: Một dòng l{ chuỗi ký tự S (0 < length(S) ≤ 2000).
Kết quả: Mỗi dòng in ra kí tự (in ra chữ hoa) v{ số lần xuất hiện tương ứng của kí tự đó trong
chuỗi.
INPUT OUTPUT
AbabAbcaax A 5
B 3
C 1
X 1

X021. Chuyển số thành xâu


Yêu cầu: Viết chương trình nhập v{o c|c cặp số (a,b). Tính tổng a+b v{ ghép chúng th{nh một
x}u ký tự. Kiểm tra xem x}u ký tự đó có đối xứng hay không?
Dữ liệu:
- Dòng 1 ghi n l{ số cặp (ai,bi) (n<=105) ;
- n dòng kế tiếp ghi 2 số nguyên a,b (0<a,b<109)
Kết quả:
-Ghi YES nếu x}u biểu diễn cuối cùng l{ đối xứng, ghi NO nếu x}u không đối xứng
INPUT OUTPUT
2 YES
12 12
21 21
X022. Tìm xâu
Yêu cầu: Viết chương trình nhập v{o hai x}u S1 v{ S2. Tìm xem x}u S2 có trong xâu S1 hay
không. Nếu có thì in ra YES, nếu không thì in ra NO
Dữ liệu:
- Dòng 1 l{ x}u S1 (0 < length(S1) ≤ 1000).
- Dòng 2 l{ x}u S2 (0 < length(S2) ≤ 1000).
Kết quả: In ra YES hoặc NO
INPUT OUTPUT
cong hoa xa hoi chu nghia YES
cong
X023 - Chữ số chung
Yêu cầu: Cho hai số nguyên dương X v{ Y. H~y in ra số lượng chữ số chung của hai số
Dữ liệu: Hai dòng, mỗi dòng ghi một số nguyên dương X, Y (X, Y < 10100)
Kết quả: Ghi ra số lượng chữ số chung của X, Y
INPUT OUTPUT
123 2
234
X024. Chữ số lớn nhất
Yêu cầu: Cho một số nguyên dương X. H~y tìm ra chữ số lớn nhất trong số nguyên dương X
Dữ liệu: Một dòng l{ số nguyên dương X (X < 10100)
Kết quả: Ghi ra chữ số lớn nhất của X
INPUT OUTPUT
123 3
X025. Mã hóa 3
Yêu cầu: Trong bảng m~ ASCII, 26 kí tự chữ c|i thường từ ‘a’ đến ‘z’ được m~ hóa tương ứng
bằng c|c số tự nhiên từ 97 đến 122. Cho một x}u kí tự S chỉ chứa to{n c|c kí tự chữ c|i
thường. Gọi P l{ x}u m~ hóa tương ứng của x}u S bằng c|ch m~ hóa từng ký tự trong S (theo
bảng m~ ASCII) v{ viết liên tiếp nhau. Ví dụ: S = ‘ab’ thì P = ‘9798’. H~y viết chương trình nhập
v{o từ b{n phím một x}u đ~ m~ hóa P (có không qu| 255 kí tự) v{ in ra m{n hình x}u kí tự S.
Dữ liệu: Chứa một x}u đ~ m~ hóa P.
Kết quả: In ra m{n hình x}u kí tự S.
INPUT OUTPUT
979899 abc
X026. Mã hóa Ceasar
Yêu cầu: Trước công nguyên, nh{ qu}n sự người La M~ Julius Ceasar đ~ nghĩ ra phương ph|p
m~ hóa một bản tin như sau: thay thế mỗi chữ c|i trong bản tin bằng chữ c|i đứng sau nó k vị
trí trong bảng chữ c|i. Giả sử với k = 3, ta có bảng chuyển đổi như sau:
Chữ ban đầu: 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
Chữ thay thế: d e f g h i j k l m n o p q r s t u v w x y z a b c
Khi đó bản tin: ‘attack’ sau khi m~ hóa sẽ có bản m~ ‘dwwdfn’ v{ sau đó Ceasar gửi bản m~ cho
cấp dưới của mình.
Nhận được bản m~ v{ khóa k, cấp dưới của ông sẽ phải giải m~ bản tin để đọc nội dung của nó.
Dữ liệu:
- Dòng đầu tiên ghi khóa k,
- Dòng thứ 2 ghi bản tin sau khi đ~ được m~ hóa.
Kết quả: Đưa ra bản tin ở trạng th|i chưa được m~ hóa.
Giới hạn: 1 ≤ k ≤ 25, độ d{i bản tin không vượt qu| 100 kí tự.
INPUT OUTPUT
7 programming
wyvnyhttpun
X027. Mã hóa 1
Yêu cầu: Mr X cần gửi một văn bản quan trọng tới c|c coder của mình. Để đảm bảo tính bảo
mật của thông tin được ghi trong văn bản, ông quyết định sẽ m~ hóa văn bản trước khi gửi.
Văn bản l{ một x}u S gồm c|c chữ c|i latinh thường. Ông ấy chia đoạn văn bản th{nh hai đoạn
liên tiếp nhau l{ Sa v{ Sb. Lần lượt viết c|c x}u Sa v{ Sb theo thứ tự ngược lại ta nhận được
xâu mã hóa Q. Ví dụ, nội dung bức thư S = ‘programming’ với với khóa k = 7 sẽ được
chia th{nh 2 đoạn: Sa = ‘program’, Sb = ‘ming’, nhận được x}u m~ hóa Q = ‘margorpgnim’. Để
cho coder của mình có thể hiểu được nội dung bức thư ông ấy đ~ gửi kèm theo x}u m~ hóa Q
l{ một số nguyên dương k cho biết độ d{i x}u Sa. Bạn h~y giải m~ bức thư n{y.
Dữ liệu:
- Dòng đầu tiên ghi số nguyên không }m k.
- Dòng thứ hai ghi x}u m~ hóa Q; độ d{i của x}u Q không vượt qu| 106
Kết quả: Đưa ra x}u kí tự sau khi được giải m~.
INPUT OUTPUT
7 programming
margorpgnim
X028. Số ký tự phân biệt
Yêu cầu: Viết chương trình nhập v{o một văn bản l{ một chuỗi kí tự bao gồm chữ c|i la tinh
thường. H~y in ra số lượng c|c ký tự ph}n biệt trong chuỗi.
Dữ liệu: Một dòng l{ chuỗi ký tự S (0 < length(S) ≤ 2000).
Kết quả: Số lượng c|c ký tự ph}n biệt trong chuỗi ký tự S.
INPUT OUTPUT
abca 3
X029 - Loại bỏ chữ số
Yêu cầu: Viết chương trình nhập v{o một văn bản l{ một chuỗi kí tự bao gồm chữ c|i v{ chữ
số. Loại bỏ c|c chữ số trong chuỗi ký tự đó.
Dữ liệu: Một dòng l{ chuỗi ký tự S (0 < length(S) ≤ 1000).
Kết quả: Chuỗi S sau khi đ~ loại bỏ c|c ký tự số.
INPUT OUTPUT
123abca4f abcaf
X030 - Đếm số từ
Yêu cầu: Viết chương trình nhập v{o một văn bản l{ một chuỗi kí tự v{ có thể chứa c|c kí tự
c|ch trống. Đếm số từ trong chuỗi ký tự đó.
Dữ liệu: Một dòng l{ chuỗi ký tự S (0 < length(S) ≤ 1000).
Kết quả: Số từ trong chuỗi .
INPUT OUTPUT
chuyen tin 2
X031. Ký tự số
Yêu cầu: Viết chương trình đếm c|c ký tự chữ số trong x}u S cho trước.
Dữ liệu: Một dòng là chuỗi kí tự S có độ d{i nhỏ hơn 1000 ký tự bao gồm c|c ký tự la tinh v{
c|c chữ số.
Kết quả: L{ số lượng chữ số trong chuỗi ký tự S.
INPUT OUTPUT
123abc 3
X031. Ký tự hoa
Yêu cầu: Viết chương trình l{m hoa c|c ký tự trong x}u S cho trước.
Dữ liệu: Một dòng là chuỗi kí tự S có độ d{i nhỏ hơn 1000 ký tự bao gồm c|c ký tự la tinh
thường v{ hoa.
Kết quả: L{ x}u S sau khi đ~ được l{m hoa c|c ký tự.
INPUT OUTPUT
aBc ABC
X032 - Trừ hai số nguyên
Yêu cầu: Cho 2 số nguyên dương a, b. Viết chương trình tính a - b.
Dữ liệu: Một dòng ghi 2 số nguyên a, b (Độ d{i mỗi số không qu| 100).
Kết quả: Kết quả a - b.
INPUT OUTPUT
1000000000000000000000000 999900000000000000000001
99999999999999999999

X033. Cộng hai số nguyên


Yêu cầu: Cho 2 số nguyên dương a, b. Viết chương trình tính tổng 2 số nguyên đó.
Dữ liệu: Một dòng ghi 2 số nguyên a, b (độ d{i mỗi số không qu| 100 chữ số).
Kết quả: Tổng 2 số nguyên a, b.
INPUT OUTPUT
58958645 789452984 848411629

X034. Tính giá trị biểu thức


Cho một x}u S gồm c|c kí tự số v{ kí tự dấu + -.
Em h~y viết chương trình tính gi| trị của x}u S đó.
INPUT: - Nhập v{o một x}u S duy nhất.
OUTPUT: - In gi| trị của x}u S ra m{n hình.
Dữ liệu đảm bảo S không vượt qu| giới hạn số nguyên 64 bit.
INPUT OUTPUT
3+4-2 5
8-15 -7

You might also like