Xâu ký tự

Bộ đề bài

# Bài tập Điểm Thời gian: Giới hạn bộ nhớ
1 Chênh lệch độ dài 100 (p) 1.0s 256M
2 Đếm dấu cách 100 (p) 1.0s 256M
3 Hoa thành thường 100 (p) 1.0s 256M
4 Xóa dấu khoảng trống 100 (p) 1.0s 256M
5 Chuyển đổi xâu 100 (p) 1.0s 256M
6 Nén xâu 100 (p) 1.0s 256M
7 Giải nén xâu 100 (p) 1.0s 256M
8 Ước chung của chuỗi 100 (p) 1.0s 1023M
9 PRIME STRING 100 (p) 1.0s 256M
10 DOUBLESTRING 100 (p) 1.0s 256M
11 Rút gọn xâu 100 (p) 1.0s 640M

1. Chênh lệch độ dài

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

Cho 2 chuỗi kí tự \(a\) và \(b\). Hãy in ra độ chênh lệnh độ dài của \(2\) chuỗi.

Input

  • Dòng thứ nhất là chuỗi kí tự a.
  • Dòng thứ hai là chuỗi kí tự b.

Output

  • Gồm một dòng duy nhất là kết quả cần tìm.

Lưu ý: Chuỗi nhập vào có thế có dấu khoảng trống (dùng getline).

Example

Test 1

Input
zzzzzz aa
ssssss aaaaaa 
Output
4

2. Đếm dấu cách

Đ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ự \(S\) có \(n\) kí tự \((n≤100)\). Hãy đếm số kí tự khoảng trắng trong chuỗi đó.

Input

  • Gồm một dòng duy nhất là chuỗi kĩ tự \(S\).

Output

  • In ra số lượng kí tự khoảng trắng của \(S\).

Example

Test 1

Input
kid  1   4   1  2 
Output
10

3. Hoa thành thườ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\)n kí tự bất kì \((n≤100)\). Hãy đổi tất cả chữ hoa có trong chuỗi thành chữ thường. Xuất chuỗi ra màn hình.

Input

  • Gồm một dòng duy nhất là một chuỗi kí tự

Output

  • In chuỗi đã đổi ra màn hình

Example

Test 1

Input
4I1K2D14Ti 
Output
4i1k2d14ti

4. 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

5. Chuyển đổi xâu

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

Thầy Hải được trao \(1\) bức thư tình từ \(1\) bạn nữ xinh đẹp giấu tên, nhưng trong bức thư, bạn nữ cố tình ghi lẫn lộn giữa chữ hoa, chữ thường và yêu cầu thầy hãy chuyển ngược lại (chữ hoa thành chữ thường và ngược lại). Thầy Hải rất thích, nhưng thầy đang bận ôn thi cho học sinh nên không muốn mất thời gian để chuyển đổi, các bạn hãy viết chương trình giúp thầy nhé.

Input

  • Gồm \(1\) dòng duy nhất là xâu kí tự cần chuyển đổi. \((1≤length(S)≤100)\).

Output

  • Xâu đã chuyển đổi.

Example

Test 1

Input
dEAR hAI 
Output
Dear Hai

6. Nén xâu

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

Một xâu ký tự có thể nén lại thành một xâu mới bằng cách nén các ký tự giống nhau đứng cạnh nhau. Ví dụ trong xâu \(aaaa\) sẽ nén thành \(4a\). Hãy lập trình để nén một xâu ký tự thường theo cách trên.

Input

  • Một xâu các ký tự là chữ cái thường có tối đa \(10^5\) ký tự.

Output

  • Một xâu ký tự sau khi nén.

Example

Test 1

Input
mmaabbbeeeezh 
Output
2m2a3b4ezh

7. Giải nén xâu

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

Trong máy tính, để tiết kiệm bộ nhớ, người ta thường tìm cách nén dữ liệu. Trong việc nén văn bản, ta sư dụng một phương pháp đơn giản đươc mô tả thông qua ví dụ sau:

Ví dụ:

Với xâu ký tự: "aaaabbb" sẽ được nén lại thành xâu "4a3b". Với xâu ký tự "aaab" sẽ được nén lại thành "3ab".

Cho một xâu \(S\) gồm các ký tự thuộc tập \('a'...'z'\). Gọt \(St\) là xâu nén của xâu \(S\) theo phương pháp được mô tả như trên. Xâu \(St\) gồm \(N\) ký tự thuộc tập các ký tự \('a'...'z'\), \('0',...'9'\)

Hãy giải nén xâu \(St\) để được xâu gốc \(S\).

Input

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

Output

  • Một xâu ký tự \(S\) sau khi giải nén.
  • Đề đảm bảo số lượng kí tự sau khi giải nén không quá \(10^{7}\).

Constraints

  • \(1 \leq N \leq 10000\)

Example

Test 1

Input
2m2a3b4ezh 
Output
mmaabbbeeeezh

8. Ước chung của chuỗi

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

Một chuỗi \(a\) được gọi là ước của chuỗi \(b\) nếu tồn tại một số nguyên dương \(x\) sao cho khi ta viết \(x\) lần chuỗi \(a\) thì sẽ thu được chuỗi \(b\).

Ví dụ chuỗi abab có 2 ước là ab và abab.

Yêu cầu: Bạn được cho 2 chuỗi \(S_1\) và \(S_2\), hãy đếm xem chúng có tất cả bao nhiêu ước chung?

Input

  • Dòng đầu tiên chứa chuỗi \(S_1\).
  • Dòng thứ hai chứa chuỗi \(S_2\).
  • Cả 2 chuỗi đều gồm các chữ cái thường, độ dài 2 chuỗi không quá \(10^5\) ký tự.

Output

  • In ra một số nguyên là kết quả của bài toán.

Example

Test 1

Input
xyztxyzt  
xyzt
Output
1
Note

Chuỗi xyztxyzt có 2 chuỗi ước là: xyzt và xyztxyzt; Chuỗi xyzt có 1 chuỗi ước là: xyzt nên có 1 chuỗi ước chung là xyzt

Test 2

Input
aaaa
aa
Output
2
Note

Chuỗi aaaa có 3 chuỗi ước là: a, aa và aaaa; Chuỗi aa có 2 chuỗi ước là: a và aa nên có 2 chuỗi ước chung là a và aa

9. PRIME STRING

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

Xâu \(S\) này được gọi là xâu nguyên tố nếu số lượng kí tự chỉ xuất hiện đúng 1 lần trong xâu \(S\) là số nguyên tố.

Yêu cầu:
Bạn được cho xâu \(S\) chỉ bao gồm các ký tự thường trong bảng chữ cái \(ABC\). Vậy hãy kiểm tra xem xâu \(S\) có phải là xâu nguyên tố hay không?

Input

  • Dòng đầu ghi số \(q (q\leq100)\), là số câu hỏi.

  • \(q\) dòng tiếp theo, mỗi dòng ghi ra xâu \(S\) (độ dài xâu \(S\) không quá \(1000\)).

Output

  • Gồm \(q\) dòng, mỗi dòng ghi ra kết quả tương ứng của mỗi câu hỏi.

Example

Test 1

Input
4
lcgfwrkvudgzzckaadeg
flildnmjaxhfpwjuiowd
truirounxoarzmeriwyt
ipoqfcmgdadtlajeecni
Output
YES
NO
NO
NO

10. DOUBLESTRING

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

Chúng ta sẽ gọi một chuỗi có thể nhận được bằng cách nối hai chuỗi bằng nhau là một chuỗi nhân đôi. Ví dụ: xyzxyz và aaaaaa là chuỗi nhân đôi, trong khi ababab và xyzxy thì không là chuỗi nhân đôi.

Cho một chuỗi \(S\) bao gồm các chữ cái tiếng Anh viết thường. Tìm độ dài của chuỗi nhân đôi dài nhất có thể thu được bằng cách xóa một hoặc một vài ký tự từ cuối \(S\). Dữ liệu đảm bảo rằng luôn tạo được một chuỗi nhân đôi không rỗng.

Input

  • Gồm 1 dòng duy nhất chứa chuỗi \(S\) \((1 \leq |S| \leq 1000)\) gồm các ký tự latin in thường.

Output

  • In ra một dòng là độ dài của chuồi nhân đôi.

Example

Test 1

Input
fosfosndt
Output
6

11. Rút gọn xâu

Đ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 \(S\) chỉ gồm các chữ cái in thường. Cách mô tả rút gọn của xâu \(S\) như sau:

  • Chọn ra một xâu \(X\) ngắn nhất có thể và một số nguyên dương \(K\), sao cho khi viết xâu \(X\) lặp lại \(K\) lần thì ta thu được xâu \(S\)
  • Ghép \(K\) và \(X\), ta thu được xâu rút gọn của \(S\).

Ví dụ:

  • Xâu rút gọn của “abababab” là “4ab”
  • Xâu rút gọn của “aaa” là “3a”
  • Xâu rút gọn của “abac” là “1abac”

Input

  • Gồm một dòng duy nhất chứa xâu \(S\) có độ dài không quá \(1000\).

Output

  • In ra xâu rút gọn của xâu \(S\).

Example

Test 1

Input
abababab 
Output
4ab

Test 2

Input
aaa 
Output
3a

Test 3

Input
abac 
Output
1abac