trang chủ / đề bài / dhbb20_11_password

Mật khẩu

Đề bài

Mô tả

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=t1t2…tn (gồm n ký tự, mỗi ký tự thuộc a đến z) và dãy số nguyên a1,a2,…,am (1≤a1<a2<⋯<am≤n) là dãy số mà hai bạn đã thống nhất thì mật khẩu là một xâu P=ta1ta2…tam, 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í a1,a2,…,am. Ví dụ, T= missyouuu và dãy số a1=2,a2=3,a3=5,a4=6,a5=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 a1=2,a2=4,a3=5,a4=6,a5=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ã hóa mỗi dãy (dài nhất) các ký tự liên tiếp giống nhau trong T thành ký tự đại diện và số lượng (viết ở hệ thập phân, không có chữ số 0 ở đầu). Do đó hai dãy liền kề trong TE luôn có ký tự đại diện khác nhau.

Ví dụ, xâu T= missyouuuuuuuuuu (có 10 ký tự u ở cuối) 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 109+7.

Dữ liệu vào

  • Dòng đầu chứa hai số nguyên dương n,m (n là độ dài xâu T, m là độ dài xâu P);
  • Dòng thứ hai chứa một xâu là mã hóa TE của xâu T;
  • Dòng thứ ba chứa một xâu là xâu P gồm m ký tự thuộc a đến z.

Dữ liệu ra

In ra một số nguyên duy nhất là số R chia dư cho 109+7.

Ràng buộc

  • 1≤n≤109, 1≤m≤30.
  • Độ dài xâu mã hóa TE không vượt quá 105.

Subtasks

  • Có 20% số lượng test ứng với 20% số điểm thỏa mãn điều kiện: n≤20, m=1;
  • Có 20% số lượng test khác ứng với 20% số điểm thỏa mãn điều kiện: n≤20, m<n;
  • Có 20% số lượng test khác ứng với 20% số điểm thỏa mãn điều kiện: n≤105, m=3;
  • Có 20% số lượng test khác ứng với 20% số điểm thỏa mãn điều kiện: n≤105, m≤30;
  • Có 20% số lượng test còn lại ứng với 20% số điểm thỏa mãn điều kiện: n≤109, m≤30 và xâu mã hóa của xâu T có độ dài không vượt quá 105.

Ví dụ

Input Output Giải thích
9 5
m1i1s2y1o1u3
isyou
6 T= missyouuu. Ký tự s chọn ở vị trí 3 hoặc 4, ký tự u chọn ở vị trí 7, 8 hoặc 9, nên có 2·3=6 dãy.
11 3
m1i1s2i1s2i1p2i1
isi
14 T= mississippi. Các ký tự i ở vị trí 2,5,8,11, ký tự s ở vị trí 3,4,6,7. Đếm các bộ a1<a2<a3 với ta1=ta3= i, ta2= s: chọn i ở vị trí 2 có 2·3+2·2=10 cách, chọn i ở vị trí 5 có 2·2=4 cách, tổng 14.
1000000000 2
z1000000000
zz
28 Ví dụ bổ sung (không có trong đề gốc). T gồm 109 ký tự z, mọi cặp vị trí a1<a2 đều được nên R=(1092)=499999999500000000, chia dư cho 109+7 được 28.

Bình luận

Không có bình luận tại thời điểm này.

gnatmake 12.2.0 a68g 3.1.2 nasm 2.16.1 as_x64 2.47 awk 1.3.4 gcc 16.2.0 dotnet 10.0.402 g++ 16.2.0 g++-themis 16.2.0 g++17 16.2.0 g++20 16.2.0 g++23 16.2.0 clang++ 22.1.8 dmd 2.113.0 dart 3.13.6 gforth 0.7.3 gfortran 15.3.0 go 1.27.3 groovyc 5.1.3 javac 26.0.2.1 node 26.12.1 julia 1.13.2 kotlinc 2.4.21 lean 4.35.0 sbcl 2.2.9 lua 5.5.1 nim 2.2.12 fpc 3.2.2 fpc-themis 3.2.2 perl 5.42.3 php 8.5.12 pike 8.0 swipl 9.0.4 pypy3 7.3.23 python3 3.15.1 racket 8.7 ruby 4.0.8 rustc 1.99.1 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 swiftc 6.4.1 tclsh 8.6 bun 1.4.4 deno 2.9.8 v 0.5.2 zig 0.17.0