trang chủ / bài tập / phonenums22

Số Điện Thoại

Đề bài

Mô tả

Bessie có một bàn phím số điện thoại với các số 1-9 được sắp xếp trong lưới 3×3:

  • 123456789

Mỗi lần nhấn, Bessie có thể:

  • Nhấn một phím đơn lẻ (ví dụ: 5).
  • Nhấn hai phím liền kề (chia sẻ cạnh chung) cùng lúc (ví dụ: 12, hoặc 25).
  • Nhấn bốn phím tạo thành hình vuông 2×2 cùng lúc (ví dụ: 1,2,4,5).

Khi Bessie nhấn nhiều phím cùng lúc, các chữ số tương ứng xuất hiện trong chuỗi đầu ra theo thứ tự tùy ý (bất kỳ hoán vị nào đều có thể xảy ra).

Cho chuỗi chữ số mà Bessie đã gõ ra, hãy đếm có bao nhiêu số điện thoại gốc khác nhau mà Bessie có thể đã cố gắng gõ để tạo ra chuỗi đầu ra này.

Hai số điện thoại gốc được coi là khác nhau nếu chúng khác nhau về số lần nhấn, hoặc ở một lần nhấn nào đó, tập phím được nhấn khác nhau.

Dữ liệu vào

  • Dòng đầu tiên: số nguyên T (1T10), số lượng test case.
  • T dòng tiếp theo, mỗi dòng chứa một chuỗi không rỗng gồm các chữ số từ 1 đến 9.
  • Tổng độ dài tất cả các chuỗi không vượt quá 105.

Dữ liệu ra

Với mỗi test case, in ra số lượng số điện thoại gốc có thể, lấy dư cho 109+7.

Ràng buộc

  • 1T10
  • Mỗi chuỗi chỉ chứa các chữ số 1-9 và không rỗng.
  • Tổng độ dài tất cả các chuỗi 105.

Các cặp phím liền kề (chia sẻ cạnh):

  • (1,2),(2,3),(4,5),(5,6),(7,8),(8,9),(1,4),(2,5),(3,6),(4,7),(5,8),(6,9)

Các bộ bốn phím hình vuông 2×2:

  • {1,2,4,5},{2,3,5,6},{4,5,7,8},{5,6,8,9}

Ví dụ

Input Output Giải thích
5
1478
4455
5968
31313211
123659874
5
2
24
3
255
Với chuỗi "1478", có 5 cách: (1)(4)(7)(8), (1)(4)(78), (1)(4)(87), (1)(47)(8), (14)(7)(8). Với "4455", có 2 cách: (4)(4)(5)(5) và (4)(45)(5).

Ghi chú

Lưu ý rằng khi nhấn nhiều phím cùng lúc, các chữ số có thể xuất hiện theo bất kỳ thứ tự nào. Ví dụ, nhấn {7,8} có thể tạo ra "78" hoặc "87" trong chuỗi đầu ra.

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.46 awk 1.3.4 gcc 16.1.0 csc 6.12.0.200 g++ 16.1.0 g++-themis 16.1.0 g++17 16.1.0 g++20 16.1.0 g++23 16.1.0 clang++ 22.1.6 dmd 2.112.0 dart 3.12.1 gforth 0.7.3 gfortran 12.2.0 go 1.26.3 groovyc 5.0.6 javac 25.0.3 node 26.2.0 kotlinc 2.3.21 sbcl 2.2.9 lua 5.4.8 nim 2.2.10 fpc 3.2.2 fpc-themis 3.2.2 perl 5.36.0 php 8.5.6 pike 8.0 pypy3 7.3.23 python3 3.14.5 racket 8.7 ruby 4.0.5 rustc 1.96.0 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 tclsh 8.6 bun 1.3.14 deno 2.8.1 v 0.5.1 zig 0.16.0