[Buổi 24][Hàm tiền tố & KMP][HW] Bài 2: Chu kỳ phát tín hiệu
Chu kỳ phát tín hiệu
Bối cảnh và bài toán
Một thiết bị phát tín hiệu bằng cách lặp lại một mẫu từ đầu chuỗi. Ở lần lặp cuối, thiết bị có thể dừng giữa chừng khi phiên truyền kết thúc. Kỹ sư muốn biết những độ dài mẫu nào có thể sinh ra đúng chuỗi đã ghi nhận.
Yêu cầu
Tìm mọi độ dài p sao cho chuỗi được tạo bởi việc lặp tiền tố dài p, trong đó lần lặp cuối có thể chỉ dùng một phần.
Input
Một dòng chứa chuỗi s.
Output
In mọi độ dài chu kỳ theo thứ tự tăng dần.
Ràng buộc
1 <= |s| <= 10^6schỉ gồm chữ cái thườnga..z.
Chấm điểm
| Subtask | Điểm | Điều kiện | Official tests |
|---|---|---|---|
| S1 | 20% | |s| <= 200 | 01–04 |
| S2 | 30% | |s| <= 10^4 | 05–10 |
| S3 | 50% | Không có ràng buộc bổ sung | 11–20 |
Ví dụ 1
Input
abcabca
Output
3 6 7
Giải thích. Mẫu dài 3 là abc; lặp abcabc... sinh ra 7 ký tự đầu đúng bằng chuỗi. Độ dài 6 và 7 cũng hợp lệ.
Ví dụ 2
Input
aaaa
Output
1 2 3 4
Giải thích. Mọi tiền tố của chuỗi toàn ký tự a đều có thể sinh chuỗi khi cho phép lần lặp cuối không đầy đủ.
Thông tin bài tập
| Thuộc tính | Giá trị |
|---|---|
| Mã bài | DSA-M08-B24-HW02 |
| Buổi | B24 |
| Loại bài | HOMEWORK |
| Mức độ khó | Trung bình (Medium) |
| Thời gian làm bài khuyến nghị | 40 phút |
| Time limit | 2 giây |
| Memory limit | 256 MB |
| Tổng điểm | 100 |
| Chuẩn ngôn ngữ tham chiếu | C++11 trở lên |
Nguồn: Phỏng theo / Adapted from: CSES Problem Set – Finding Periods – Finding Periods (1733).
Comments