Ôn thi HSG buổi 3
Chèn chuỗi
Nộp bàiPoint: 1
Viết chương trình cho phép nhập vào hai chuỗi a và b. Thực hiện chèn chuỗi b vào chuỗi a tại vị trí p.
Đầu vào:
- Hàng thứ nhất là chuỗi a
- Hàng thứ hai là chuỗi b
- Hàng cuối cùng là vị trí p cần chèn chuỗi b vào chuỗi a
Đầu ra: Chuỗi kết quả chèn b vào a tại vị trí p
Input:
Ngon ngu lap trinh c
ngon ngu C.
1
Output:
ngon ngu C.Ngon ngu lap trinh c
Liệt kê từ in hoa
Nộp bàiPoint: 1
Tìm từ in hoa xuất hiện trong chuỗi. Kết quả in ra từ theo thứ tự xuất hiện của chúng trong chuỗi.
INPUT:
Lap TRINH NGON Ngu c
OUTPUT:
TRINH NGON
Loại bỏ khoảng trắng
Nộp bàiPoint: 1
Viết chương trình cho phép nhập vào một chuỗi và thực hiện loại bỏ các khoảng trắng giữa các từ trong chuỗi.
INPUT:
Nguyen van binh
OUPUT:
Nguyenvanbinh
Loại bỏ từ
Nộp bàiPoint: 1
Viết chương trình cho phép nhập vào một chuỗi và từ cần loại bỏ khỏi chuỗi. Thực hiện loại bỏ từ và in ra kết quả
Đầu vào:
- Hàng thứ nhất là chuỗi ban đầu
- Hàng tiếp theo là từ cần loại bỏ
Đầu ra: Chuỗi kết quả
INPUT:
mon thcs2 la mon 2tc
mon
OUTPUT:
thcs2 la 2tc
Viên đá lân cận (xử lý xâu - hsg)
Nộp bàiPoint: 1
Có n viên đá trên bàn liên tiếp, mỗi viên có thể có màu đỏ, xanh lá cây hoặc xanh dương. Đếm số lượng đá tối thiểu cần lấy từ bàn để bất kỳ hai viên đá lân cận nào có màu khác nhau. Đá liên tiếp được coi là lân cận nếu không có đá khác giữa chúng.
Đầu vào: Nhập vào chuỗi s đại diện cho màu sắc của đá. Chúng tôi sẽ xem xét các viên đá trong hàng được đánh số từ 1 đến n từ trái sang phải. Sau đó, ký tự thứ i bằng "R", nếu viên đá thứ i có màu đỏ, "G", nếu nó màu xanh lá cây và "B", nếu nó màu xanh.
Đầu ra: In một số nguyên duy nhất - câu trả lời cho vấn đề.
Input:
RRRR
Ouput:
3
Nói xin chào (xử lý xâu - hsg)
Nộp bàiPoint: 1
Vasya mới tập làm quen với bàn phím máy tính và vừa tham gia vào một phòng chat trực tuyến. Cậu ấy muốn gõ từ "hello" để chào mọi người. Tuy nhiên, do luống cuống, ngón tay của Vasya cứ bấm nhầm và lặp phím lung tung, tạo ra một xâu ký tự S lộn xộn.
Mọi người trong phòng chat rất thông cảm và quy ước với nhau rằng: Vasya sẽ được coi là đã "nói xin chào" thành công nếu ta có thể xóa đi một vài ký tự trong xâu S (hoặc không xóa ký tự nào) sao cho các ký tự còn lại ghép thành đúng từ "hello" (lưu ý: không được thay đổi thứ tự trước sau của các ký tự còn lại).
Yêu cầu: Cho xâu ký tự S mà Vasya vừa gõ, hãy kiểm tra xem cậu ấy có "nói xin chào" thành công hay không.
Dữ liệu vào (Input):
• Gồm một dòng duy nhất chứa xâu S mà Vasya đã gõ. Xâu chỉ bao gồm các chữ cái in thường, độ dài tối thiểu là 1 và tối đa là 100 ký tự.
Dữ liệu ra (Output):
• In ra YES nếu Vasya nói xin chào thành công.
• Ngược lại, in ra NO.
Ví dụ 1:
Input:
ahhellllloou
Output:
YES
Ví dụ 2:
Input:
hlelo
Output:
NO
Từ Berland sang Birland (xử lý xâu - hsg)
Nộp bàiPoint: 1
Việc dịch thuật từ tiếng Berland sang tiếng Birland thực ra lại vô cùng thú vị. Hai ngôn ngữ này có một sợi dây liên kết rất đặc biệt: một từ trong tiếng Birland chính là cách viết đảo ngược hoàn toàn của từ đó trong tiếng Berland!
Ví dụ: Từ code trong tiếng Berland khi dịch sang tiếng Birland sẽ được đánh vần ngược lại thành edoc.
Tuy quy tắc cực kỳ đơn giản, nhưng gõ phím nhanh thì vẫn rất dễ mắc lỗi. Vasya vừa dịch một từ S (tiếng Berland) thành từ T (tiếng Birland). Bạn hãy lập trình giúp Vasya kiểm tra xem cậu ấy đã dịch chính xác 100% hay chưa nhé.
Yêu cầu: Cho hai xâu ký tự S và T. Hãy kiểm tra xem T có phải là xâu đảo ngược hoàn toàn của S hay không.
Dữ liệu vào (Input):
• Dòng đầu tiên chứa từ S (từ gốc tiếng Berland).
• Dòng thứ hai chứa từ T (bản dịch tiếng Birland).
• Cả hai từ chỉ bao gồm các chữ cái in thường, không chứa dấu cách thừa. Độ dài mỗi từ tối thiểu là 1 và tối đa là 100 ký tự.
Dữ liệu ra (Output):
• In ra YES nếu từ T chính xác là từ S viết ngược lại.
• Nếu sai dù chỉ một ký tự hoặc sai độ dài, in ra NO.
Ví dụ 1:
Input:
code
edoc
Output:
YES
Ví dụ 2: Input:
#
abb
aba
Output:
NO
Trò chơi của Anton và Danik (xử lý xâu - hsg)
Nộp bàiPoint: 1
Anton và cậu bạn thân Danik đều là những người đam mê cờ vua mãnh liệt. Trong một buổi giao lưu, họ đã chơi liên tục n ván cờ (với trình độ một chín một mười, không có ván cờ nào kết thúc với tỉ số hòa).
Sau một chuỗi trận đấu trí căng thẳng, cả hai đều hoa mắt chóng mặt và không nhớ rõ ai đang dẫn trước. Bạn được cung cấp một cuốn sổ ghi chép lại kết quả của từng ván đấu. Hãy lập trình để thống kê và phân định xem ai mới là nhà vô địch thực sự nhé!
Yêu cầu: Đếm số lượng ván thắng của mỗi người và đưa ra kết quả chung cuộc.
Dữ liệu vào (Input):
Dòng đầu tiên chứa một số nguyên dương n (1 <= n <= 100000) — tổng số ván cờ đã chơi.
Dòng thứ hai chứa một xâu ký tự S bao gồm đúng n chữ cái in hoa (chỉ gồm các ký tự 'A' và 'D').
Ký tự 'A' có nghĩa là Anton thắng ván đó.
Ký tự 'D' có nghĩa là Danik thắng ván đó.
Dữ liệu ra (Output):
In ra Anton nếu Anton giành được nhiều ván thắng hơn Danik.
In ra Danik nếu Danik giành được nhiều ván thắng hơn Anton.
In ra Friendship (Tình bạn) nếu hai người có số ván thắng bằng nhau.
Ví dụ 1:
Input:
5
AAADD
Output:
Anton
(Giải thích: Trong 5 ván cờ, Anton thắng 3 ván, Danik chỉ thắng 2 ván. Chung cuộc Anton là người chiến thắng).
Ví dụ 2:
Input:
6
ADAAAA
Output:
Anton
Ví dụ 3:
Input:
6
DADADA
Output:
Friendship
(Giải thích: Mỗi người đều giành được đúng 3 ván thắng, kết quả chung cuộc là hòa).
Xâu nhị phân mạnh
Nộp bàiPoint: 1
Cho xâu nhị phân S có độ dài n.
Hãy tìm xâu con liên tiếp dài nhất của xâu S là xâu nhị phân mạnh. Một xâu nhị phân được coi là mạnh nếu hai ký tự liên tiếp nhau bất kỳ trong xâu đó có giá trị khác nhau.
Input:
• Dòng đầu tiên gồm số nguyên dương n (n ≤ 10^5);
• Dòng thứ hai gồm xâu nhị phân S (chỉ chứa kí tự 0 và 1).
Output:
Một số nguyên là đô dài của xâu con thỏả mãn đề bài.
Ví dụ:
Input:
6
100101
Output:
4
Input:
5
11111
Output:
1
Kiểm tra số dư tài khoản
Nộp bàiPoint: 1
Để tiếp tục nâng cao trải nghiệm cho người dùng, nhà mạng HNOJ tiếp tục xây dựng dịch vụ kiểm tra số dư tài khoản chỉ với một nút gửi. Bạn vừa gửi yêu cầu kiểm tra tài khoản và nhận được thông báo, hãy tính số tin nhắn bạn còn có thể gửi được với số dư hiện tại, với chi phí cho mỗi tin nhắn cơ sở vẫn giữ là 3 dogecoin.
Input:
Gồm một xâu có dạng: So du tai khoan: (x) dogecoin
Với x là số dư hiện tại của người dùng (x nguyên dương, |x| ≤ 3000).
Output: In ra số lượng tin nhắn cơ sở bạn có thể gửi được với số dư x.
Sample Test
Input:
So du tai khoan: 200 dogecoin
Output:
66