Mật khẩu (DHBB CT)

Xem PDF




Tác giả:
Dạng bài
Điểm: 500 (p) Thời gian: 1.0s Bộ nhớ: 1023M Input: bàn phím Output: màn hình

Do dịch Covid-19, hai bạn Hồng và Chi không được đi học và gặp nhau nhưng hai bạn vẫn thường xuyên nhắn tin cho nhau. Một lần, Hồng muốn gửi mật khẩu tham gia lớp học online cho Chi nhưng không muốn em Phúc tò mò và biết được. Theo ý tưởng giấu tin trong ảnh, Hồng quyết định sẽ giấu mật khẩu vào trong đoạn văn bản gửi cho Chi. Cụ thể, với một văn bản mà Hồng gửi cho Chi được biểu diễn bằng xâu ký tự \(T=t_1t_2 \cdots t_n\) (gồm \(n\) ký tự, mỗi ký tự thuộc \(′a′\) đến \(′z′\)) và dãy số nguyên \(a_1,a_2,…,a_m\) \((1 \leq a_1<a_2< \cdots <a_m \leq n)\) là dãy số mà hai bạn đã thống nhất thì mật khẩu là một xâu \(P=t_{a_1}t_{a_2} \cdots t_{a_m}\), là xâu độ dài \(m\) nhận được bằng cách ghép lần lượt các ký tự ở các vị trí \(a_1,a_2,\cdots,a_m\). Ví dụ, \(T= ′missyouuu′\) và dãy số \(a_1=2,a_2=3,a_3=5,a_4=6,a_5=8\) thì mật khẩu là \(P= “isyou”\).

Hồng nhanh chóng nhận ra rằng, với một xâu \(T\) và mật khẩu \(P\) sẽ tồn tại nhiều dãy số để xác định mật khẩu. Ví dụ, một dãy số khác \(a_1=2,a_2=4,a_3=5,a_4=6,a_5=7\) cũng xác định được mật khẩu \(P= “isyou”\) trong xâu \(T= ′missyouuu′\).

Trong quá trình gửi, xâu \(T\) sẽ được mã hóa theo phương thức RLE (Run Length Encoding). Nghĩa là, một xâu \(T\) chỉ gồm các ký tự \(‘a’\) đến \(‘z’\) được mã hóa thành xâu \(TE\) (chỉ gồm các ký tự \(‘a’\) đến \(‘z’\) và ký tự \(‘0’\) đến \(‘9’\)) bằng cách đi từ trái sang phải, mã hoá dãy các ký tự liên tiếp giống nhau trong \(T\) thành ký tự đại diện và số lượng.

Ví dụ, xâu \(T= ′missyouuuuuuuuuu′\) thì \(TE= ′m1i1s2y1o1u10′\).

Yêu cầu: Cho xâu \(TE\) (là mã hóa của xâu \(T\)) và xâu mật khẩu \(P\), gọi \(R\) là số lượng dãy số khác nhau có thể xác định được mật khẩu \(P\) trong xâu \(T\). Hãy tính \(R\) chia dư cho \(10^9+7\).

Input

  • Dòng đầu chứa hai số nguyên dương \(n,m\);
  • Dòng thứ hai chứa một xâu là mã hóa của xâu \(T\)
  • Dòng thứ ba chứa một xâu là xâu \(P\).

Output

  • Ghi ra một số nguyên duy nhất là số \(R\) chia dư cho \(10^9+7\)

Scoring

  • Subtask \(1\) (\(20\%\) số điểm): \(n \leq 20,m=1\);
  • Subtask \(2\) (\(20\%\) số điểm): \(n \leq 20,m<n\);
  • Subtask \(3\) (\(20\%\) số điểm): \(n \leq 10^5,m=3\);
  • Subtask \(4\) (\(20\%\) số điểm): \(n \leq 10^5,m \leq 30\);
  • Subtask \(5\) (\(20\%\) số điểm): \(n \leq 10^9,m \leq 30\) và xâu mã hóa của xâu \(T\) có độ dài không vượt quá \(10^5\)

Example

Test 1

Input
9 5
m1i1s2y1o1u3
isyou 
Output
6

Test 2

Input
11 3
m1i1s2i1s2i1p2i1
isi 
Output
14

Bình luận


  • -2
    huyhau6a2 3:13 p.m. 20 Tháng 9, 2022

    bài hay!