Cây nhị phân (OLP 11 - 2018)

Xem PDF

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

Cho 2 xâu ký tự \(S\)\(T\) trong đó nếu xâu nào khác rỗng thì chỉ gồm các ký tự thuộc tập hợp {\(‘U’,‘L’, ‘R’\)}.

Xét một cây nhị phân vô hạn, mỗi nút trên cây có đúng một nút cha và hai nút con (nút cha của nút
gốc là chính nó). Xuất phát từ nút gốc, ta có thể di chuyển trên cây đã cho nhờ xâu \(S\) bằng cách
duyệt lần lượt các ký tự của xâu \(S\) theo quy tắc: \(‘L’\) là chuyển sang nút con trái, \(‘R’\) là sang nút con
phải và \(‘U’\) là chuyển về nút cha. Quá trình này kết thúc tại nút nào đó \(X\). Đương nhiên, nếu \(S\)
xâu rỗng thì \(X\) chính là nút gốc.

Ký hiệu \(\Omega\) là tập hợp tất cả các xâu con của xâu \(T\) (mỗi xâu con của \(T\) nhận được từ \(T\) bằng cách
xoá bỏ một số tuỳ ý các ký tự của nó; xâu rỗng và bản thân \(T\) đều là xâu con của \(T\)).

Yêu cầu: Hãy cho biết số nút khác nhau trên cây có thể di chuyển đến được, bắt đầu từ nút \(X\), bằng
cách di chuyển trên cây nhờ tất cả các xâu trong \(\Omega\).

Input

  • Dòng đầu ghi số nguyên \(T (T \le 50)\), là số lượng bộ dữ liệu vào.
  • Mỗi bộ dữ liệu vào gồm 2 dòng liên
    tiếp trong đó mỗi dòng bắt đầu bằng ký
    tự ‘#’ và tiếp theo là xâu \(S\) (dòng đầu)
    hoặc xâu \(T\) (dòng tiếp theo). Độ dài
    mỗi xâu \(S, T\) đều không vượt quá
    \(100000 (10^5)\).

Output

  • Ghi ra các số nguyên, mỗi số trên một dòng, là kết quả
    tìm được tương ứng với bộ dữ liệu vào. Các
    kết quả cần được lấy là dư của phép chia cho
    \(100000000 (10^8)\).

Scoring

  • Subtask \(1\) (\(30\%\) số điểm): tổng độ dài các xâu \(S\)\(T\) không vượt quá \(22\).
  • Subtask \(2\) (\(50\%\) số điểm): xâu \(S\) là xâu rỗng (độ dài bằng 0).
  • Subtask \(3\) (\(20\%\) số điểm): Không cỏ ràng buộc gì thêm.

Example

Test 1

Input
5
#
#LL
#LR
#
#LU
#RLL
#
#
#LR
#RLUL
Output
3
1
6
1
8

Bình luận

Không có bình luận nào.