[DHBB25 - DX45 - 10] Bài 2: Mật khẩu tuần hoàn
Xem dạng PDFTrong trường hợp đề bài hiển thị không chính xác, bạn có thể tải đề bài tại đây: Đề bài
Bạn là chủ tài khoản của một hệ thống mạng nội bộ. Để đảm bảo an toàn, bạn cần kiểm tra lại xem mật khẩu hiện tại của tài khoản có tồn tại sự tuần hoàn nào hay không. Biết rằng mật khẩu hiện tại là một xâu ~S~ gồm ~N~ ký tự Latin thường. Bạn hãy thực hiện ~Q~ yêu cầu kiểm tra sự tuần hoàn của các xâu con ~S[l_q : r_q]~ của mật khẩu trên (~1 \le q \le Q~).
Lưu ý: Một xâu ~T~ gọi là tuần hoàn nếu tồn tại một xâu ~X \neq T~ sao cho ~T = X + X + \dots + X~. Ví dụ, xâu ~T_1 = ababab~ là xâu tuần hoàn vì nó được cấu tạo bởi 3 xâu ~ab~ ghép liền với nhau. Ngược lại, xâu ~T_2 = abcab~ không phải là xâu tuần hoàn.
Yêu cầu: Với mỗi truy vấn, xác định xem xâu con tương ứng có phải là xâu tuần hoàn hay không.
Input
- Dòng đầu tiên chứa số nguyên dương ~N~ mô tả độ dài mật khẩu.
- Dòng tiếp theo chứa xâu ~S~ mô tả mật khẩu gồm ~N~ ký tự Latin in thường.
- Dòng tiếp theo chứa số nguyên dương ~Q~ mô tả số yêu cầu kiểm tra.
- ~Q~ dòng tiếp theo, dòng thứ ~q~ chứa hai số nguyên dương ~l_q~ và ~r_q~ (~1 \le l_q \le r_q \le N~) mô tả yêu cầu kiểm tra thứ ~q~ trên xâu ~S[l_q : r_q]~.
Output
- Xuất ra ~Q~ dòng, dòng thứ ~q~ ứng với truy vấn ~q~ là YES (nếu xâu con ~S[l_q : r_q]~ tuần hoàn) hoặc NO (nếu xâu con ~S[l_q : r_q]~ không tuần hoàn).
Bình luận