String

Bộ đề bài

# Bài tập Điểm Thời gian: Giới hạn bộ nhớ
1 Xóa dấu khoảng trống 100 (p) 1.0s 256M
2 Xâu đối xứng (Palindrom) 100 (p) 1.0s 640M
3 Giờ đối xứng 100 (p) 1.0s 1023M
4 Biến đổi xâu đối xứng 100 (p) 1.0s 640M
5 Số yêu thương 100 (p) 1.0s 1023M
6 Xâu chẵn (HSG12'20-21) 100 (p) 1.0s 500M
7 Xâu Nhỏ Nhất 100 (p) 2.0s 256M

1. Xóa dấu khoảng trống

Điểm: 100 (p) Thời gian: 1.0s Bộ nhớ: 256M Input: bàn phím Output: màn hình

Cho một chuỗi kí tự gồm \(n\) kí tự bao gồm các chữ cái và khoảng trống \((n≤100)\). Chuỗi kí tự này có những dấu khoảng trống thừa, hãy xóa các dấu khoảng trống đó khỏi chuỗi sao cho giữa các từ chỉ có duy nhất \(1\) dấu khoảng trống.

Input

  • Gồm 1 dòng duy nhất chứa chuỗi kí tự.

Output

  • Chuỗi kí tự sau khi xóa dấu khoảng trống thừa (và in thêm một dấu xuống dòng sau cùng, vì bộ test có sự nhầm lẫn).

Example

Test 1

Input
Facebook      google    YOUTUBE    amazon 
Output
Facebook google YOUTUBE amazon

2. Xâu đối xứng (Palindrom)

Điểm: 100 (p) Thời gian: 1.0s Bộ nhớ: 640M Input: bàn phím Output: màn hình

Cho một xâu kí tự, hãy kiểm tra tính đối xứng của nó. Một xâu kí tự được gọi là xâu đối xứng nếu ta đọc xâu này từ trái sang phải hoặc từ phải sang trái là như nhau.

Input

  • Một xâu ký tự \(S\).

Output

  • In ra \(YES\) nếu \(S\) là xâu đối xứng, ngược lại in ra \(NO\).

Constraints

  • \(1 \leq S.size() \leq 255\)

Example

Test 1

Input
abccba 
Output
YES

Test 2

Input
abcccc 
Output
NO

3. Giờ đối xứng

Điểm: 100 (p) Thời gian: 1.0s Bộ nhớ: 1023M Input: bàn phím Output: màn hình

Thời điểm bất kỳ được coi là đối xứng nếu như số giờ và số phút ở thời điểm đó đối xứng nhau.

Ví dụ: Những thời điểm đối xứng "\(00:00\)" , "\(12:21\)". Những thời điểm không đối xứng "\(00:01\)" , "\(11:21\)" \(!\)

Yêu cầu: Cho một thời điểm bất kỳ "\(HH:MM\)" với \(HH\) là số giờ (00->23), \(MM\) là số phút (00->59). Tìm thời điểm đối xứng sớm nhất sau thời điểm đã cho.

Input

  • \(1\) chuỗi ký tự có dạng "\(HH:MM\)" với \(HH\) là số giờ (00->23), \(MM\) là số phút (00->59).

Output

  • Thời điểm đối xứng sớm nhất sau thời điểm đã cho, biểu diễn dưới dạng "\(HH:MM\)" với \(HH\) là số giờ (00->23), \(MM\) là số phút (00->59).

Example

Test 1

Input
12:21 
Output
13:31

Test 2

Input
23:59 
Output
00:00

4. Biến đổi xâu đối xứng

Điểm: 100 (p) Thời gian: 1.0s Bộ nhớ: 640M Input: bàn phím Output: màn hình

Cho một xâu con độ dài \(n\). Hãy tìm cách thay thế nhiều nhất 2 kí tự để thu được 1 xâu đối xứng.

Input

Gồm \(T\) testcase \((T \leq 10)\), mỗi testcase nằm trên một dòng:

  • Mỗi dòng gồm 1 xâu \(s\) \((|s| \leq 600)\)

Output

  • Hãy in ra \(T\) dòng, mỗi dòng là YES nếu có cách thực hiện yêu cầu trên, hoặc NO nếu không tồn tại cách nào.

Example

Test 1

Input
zcxxxc
xxczxx
zxcvbn 
Output
YES
YES
NO

Note

Cách biến đổi từng testcase như sau:

  • zcxxxc \(\rightarrow\) ccxxcc
  • xxczxx \(\rightarrow\) xxccxx
  • Không có cách biến đổi thỏa mãn.

Cách đọc input bằng Python:

Python
import sys
for s in sys.stdin:
    # xử lý s

5. Số yêu thương

Điểm: 100 (p) Thời gian: 1.0s Bộ nhớ: 1023M Input: bàn phím Output: màn hình

Một số tự nhiên được gọi là số yêu thương nếu nó là một số đối xứng, và có số lượng chữ số là số chẵn.

Yêu cầu: Cho số tự nhiên \(n(n \leq 10 ^ {100000})\). Hãy tìm số yêu thương thứ \(n\).

Input

  • Số nguyên dương \(n(n \leq 10 ^ {100000})\).

Output

  • Số yêu thương thứ \(n\).

Chú ý: Nếu có nhiều kết quả thì chỉ ghi ra số lớn nhất trong các kết quả tìm được.

Example

Test 1

Input
1 
Output
11

Test 2

Input
10 
Output
1001
Note

Giải thích: 10 số yêu thương đầu tiên là: \(11, 22, 33, 44, 55, 66, 77, 88, 99, 1001\).

6. Xâu chẵn (HSG12'20-21)

Điểm: 100 (p) Thời gian: 1.0s Bộ nhớ: 500M Input: bàn phím Output: màn hình

Cho một xâu \(S\) được chỉ gồm các ký tự chữ cái thường \(‘a’… ‘z’\) được gọi là xâu chẵn nếu số lần xuất hiện của từng chữ cái trong xâu \(S\) là số chẵn.

Input

  • Một dòng chứa duy nhất xâu \(S\) có số lượng ký tự không quá 255 ký tự.

Output

  • Nếu xâu \(S\) là xâu chẵn thì in ra "Yes". Ngược lại thì in ra "No".

Example

Test 1

Input
adccda
Output
Yes
Note

ở ví dụ thứ nhất, có 2 ký tự ‘a’; 2 ký tự ‘c’ và 2 ký tự ‘d’ đều là số lượng chẵn nên đáp án là "Yes".

Test 2

Input
adcccdaa
Output
No
Note

ở ví dụ thứ hai, có 3 ký tự ‘a’; 3 ký tự ‘c’ và 2 ký tự ‘d’ có số lượng ký tự ‘a’ là 3 (lẻ) nên đáp án là "No".

7. Xâu Nhỏ Nhất

Điểm: 100 (p) Thời gian: 2.0s Bộ nhớ: 256M Input: bàn phím Output: màn hình

Chào mừng ngày mà ami lẫn cuom1999 tụt xuống div 2 codeforces, ami quyết đặt biệt danh cho cuom1999 là một xâu kí tự \(S\). Nhận thấy mình không xứng đáng với món quà này, cuom1999 quyết định tự phạt mình bằng cách bỏ đi một kí tự trong \(S\) để thứ tự từ điển của xâu kết quả là nhỏ nhất có thể. Vì chưa hoàn hồn sau khi bị giáng xuống div 2, các bạn hãy thay cuom1999 thực hiện hình phạt nhé.

Input

  • Dòng đầu tiên chứa một số nguyên dương \(n\) là độ dài xâu \(S\) của ami. Dòng tiếp theo chứ xâu \(S\) độ dài đúng bằng \(n\).

Output

  • In ra 1 dòng là xâu \(T\) có thứ tự từ điển nhỏ nhất sau khi xoá một kí tự trong \(S\).

Scoring

  • Subtask \(1\) (\(30\%\) số điểm): \(2 \leq n \leq 10^3\)
  • Subtask \(2\) (\(70\%\) số điểm): \(2 \leq n \leq 10^5\)

Example

Test 1

Input
5 
Output
3